awk


bliznezz аватар

разрезаем текстовый файл по-строчно в другие файлы (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
0
Ваша оценка: Ничего
ramok аватар

Пример замены 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}'
0
Ваша оценка: Ничего
banda аватар

Учет и мониторинг GPRS трафика

Для учета трафика не нашел ни одной подходящей мне программы и пришлось написать небольшой скрипт. Это мой первый скрипт, не судите строго :). Спасибо ребятам из канала #linux@RusNet за помощь советами.

0
Ваша оценка: Ничего

Как узнать MAC-адрес сетевой карты Ethernet

Довольно простенький скриптик позволяющий узнать MAC-адрес сетевой карты Ethernet:

#!/bin/bash
#Используемое устройство, может быть и eth1 и т.д.
DEVICE=eth0
#собственно команда, которой присвоенна переменная MAC_ADDRESS
MAC_ADDRESS=`ifconfig $DEVICE | awk '{print $5}' | head -n 1`
#Выводим на экран 
echo $MAC_ADDRESS
4
Ваша оценка: Ничего Рейтинг: 4 (1 vote)

сетевые возможности в популярных скриптовых языках

в 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. по этому если вам нужна такая фича то придеться собирать бэш в ручную.

5
Ваша оценка: Ничего Рейтинг: 5 (1 vote)