awk
разрезаем текстовый файл по-строчно в другие файлы (striping)
вот такой нехитрый скрипт разобьет входной файл file.txt построчно на 3 файла: file.txt.0 file.txt.1 file.txt.2
awk -v PARTS=3 '{N=NR%PARTS ; print >> ARGV[1]"."N }' file.txt
Пример замены n-го появления строки в файле
Задача была озвучена так:
20:19 < todd_dsm> hey all, I have 1 file to modify (httpd.conf) I need to change the 2nd of for occurrences of "AllowOverride None". Is there a way do change the 2nd occurrence and leave 1,3, and 4 untouched?
Примерный перевод
У меня есть httpd.conf. Мне надо заменить второе появление в файле "AllowOverride None". Есть возможность заменить второе появление, не тронув первое, третье и четвертое?
Ответ:
Пример заменяет второе появление "AllowOverride None" на "replace".
$ printf "AllowOverride None\nAllowOverride None\nAllowOverride None\nAllowOverride None\n" |
awk '/AllowOverride None/ && (++i == 2) {print "replace";next}{print}'На sed
$ printf "AllowOverride None\nAllowOverride None\nAllowOverride None\nAllowOverride None\n" |
sed -e '/AllowOverride None/{x;/^1$/{x;s/.*/replace/;x};s/$/1/;x}'Учет и мониторинг GPRS трафика
Для учета трафика не нашел ни одной подходящей мне программы и пришлось написать небольшой скрипт. Это мой первый скрипт, не судите строго :). Спасибо ребятам из канала #linux@RusNet за помощь советами.
Как узнать MAC-адрес сетевой карты Ethernet
Довольно простенький скриптик позволяющий узнать MAC-адрес сетевой карты Ethernet:
#!/bin/bash #Используемое устройство, может быть и eth1 и т.д. DEVICE=eth0 #собственно команда, которой присвоенна переменная MAC_ADDRESS MAC_ADDRESS=`ifconfig $DEVICE | awk '{print $5}' | head -n 1` #Выводим на экран echo $MAC_ADDRESS
сетевые возможности в популярных скриптовых языках
в bash встоенны особые средства для программирования сетевых возможностей
через доступ к файлам(которых на самом деле нет)
/dev/tcp/<hostaddr>/<hostport> /dev/udp/<hostaddr>/<hostport>
можно достучаться до портов удаленных машин через tcp или udp протоколы.
для примера следующий код запросит страницу у вэб сервера запущеного на вашей локальной машине:
exec 3<>/dev/tcp/127.0.0.1/80 # привязать сокет связанный с хостом 127.0.0.1:80 к дескриптору номер 3 echo "GET /index.html" >&3 # отослать запрос хосту cat <&3 # получить ответ от хоста и вывести его в устройство стандартного вывода exec 3<&- # закрыть дескриптор и сокет
прошу учесть что данными свойствами не обладает bash поставляемый с популярным дистрибутивом debian. так решили мэйнтейнеры из debian. по этому если вам нужна такая фича то придеться собирать бэш в ручную.



