Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
|
регулярные_выражения._скрипты_для_sed_и_awk [2013/06/19 13:31] kirill |
регулярные_выражения._скрипты_для_sed_и_awk [2014/01/29 23:11] (текущий) |
||
|---|---|---|---|
| Строка 74: | Строка 74: | ||
| Создадим файл header | Создадим файл header | ||
| + | |||
| + | |||
| '' | '' | ||
| BEGIN{ print " Производ. Модель. | BEGIN{ print " Производ. Модель. | ||
| Строка 85: | Строка 87: | ||
| Модифицируем файл header | Модифицируем файл header | ||
| + | |||
| + | |||
| '' | '' | ||
| BEGIN{ print " Производ. Модель. | BEGIN{ print " Производ. Модель. | ||
| Строка 97: | Строка 101: | ||
| }'' | }'' | ||
| + | |||
| Проверим | Проверим | ||
| + | |||
| + | |||
| gawk -f header cars.txt | gawk -f header cars.txt | ||
| + | Использование ИЛИ | ||
| + | |||
| + | '' | ||
| + | BEGIN{ print " Производ. Модель. | ||
| + | print " | ||
| + | }\\ | ||
| + | \\ | ||
| + | |||
| + | /volvo/ || /bmw/ {print}\\ | ||
| + | |||
| + | END {\\ | ||
| + | print " | ||
| + | \\ | ||
| + | } | ||
| + | |||
| + | '' | ||
| + | Функция length | ||
| + | gawk ' {print length, $0}' cars.txt | ||
| + | Нумерациия строк | ||
| + | |||
| + | gawk ' {print NR, $0}' cars.txt | ||
| + | |||
| + | Разделители полей | ||
| + | |||
| + | Разбор файла /etc/passwd | ||
| + | |||
| + | BEGIN{ | ||
| + | print " | ||
| + | print " | ||
| + | |||
| + | } | ||
| + | |||
| + | $3>=1000 {print $1 " | ||
| + | |||
| + | END {print " | ||
| + | |||
| + | |||
| + | |||
| + | SED | ||
| + | |||
| + | |||
| + | sed (от англ. Stream EDitor) — потоковый текстовый редактор (а также язык программирования), | ||
| + | |||
| + | Инструкции sed | ||
| + | |||
| + | a - append - добавить | ||
| + | |||
| + | с- change - изменить | ||
| + | |||
| + | d - delete - удалить | ||
| + | |||
| + | i - insert - вставить | ||
| + | |||
| + | n - next - следующаяя строка со следующей инструкцией | ||
| + | |||
| + | p - print - вывести | ||
| + | |||
| + | q - quit - завершить | ||
| + | |||
| + | r(файл) - добавление содержимого файла к выбранной строке | ||
| + | |||
| + | |||
| + | s - substitute - подставить. | ||
| + | |||
| + | флаги | ||
| + | |||
| + | g - global - глобальный режим (все значения) | ||
| + | |||
| + | p - print - вывести измененные строки | ||
| + | |||
| + | w - write - записывать в файл. | ||
| + | |||
| + | |||
| + | |||
| + | Примеры | ||
| + | |||
| + | Задвоение выбранных строк | ||
| + | |||
| + | sed '/ | ||
| + | |||
| + | вывод только измененных строк | ||
| + | |||
| + | sed -n '/ | ||
| + | |||
| + | вывод по номерам строк | ||
| + | |||
| + | sed -n '5,6 p' cars.txt | ||
| + | |||
| + | Вывод первых пяти строк | ||
| + | |||
| + | sed '5 q' cars.txt | ||
| + | |||
| + | |||
| + | Использование файла программы. | ||
| + | |||
| + | Создадим файл print_56 | ||
| + | c содержимым. | ||
| + | |||
| + | 5,6 p | ||
| + | |||
| + | sed -n -f print56 cars.txt | ||
| + | |||
| + | |||
| + | |||
| + | Добавление текста к строкам | ||
| + | |||
| + | sed '2 a\ +++++' cars.txt | ||
| + | |||
| + | sed '2 i\ +++++' cars.txt | ||
| + | |||
| + | |||
| + | Замена строк | ||
| + | файл | ||
| + | сhange_test | ||
| + | |||
| + | '' | ||
| + | 2,4 c \ \\ | ||
| + | ++++++++++++++++++\ | ||
| + | ------------------\ | ||
| + | ******************. | ||
| + | '' | ||
| + | |||
| + | sed -f сhange_test cars.txt | ||
| + | |||
| + | подставка. | ||
| + | |||
| + | файл | ||
| + | subs_demo | ||
| + | |||
| + | s/ | ||
| + | |||
| + | sed -f subs_demo cars.txt | ||
| + | |||
| + | Запись измененных строк в файл | ||
| + | |||
| + | subs_demo2 | ||
| + | |||
| + | s/ | ||
| + | |||
| + | Запись диапазона строк в другой файл. | ||
| + | |||
| + | файл write_demo | ||
| + | |||
| + | 2,4 w temp2 | ||
| + | |||
| + | запись всех строк кроме выбранных | ||
| + | |||
| + | |||
| + | 2,4 !w temp2 | ||
| + | |||
| + | Инструкция (n следующий.) | ||
| + | |||
| + | файл next_demo | ||
| + | |||
| + | 3 n | ||
| + | |||
| + | p | ||
| + | |||
| + | n для шаблона | ||
| + | |||
| + | next_demo2 | ||
| + | |||
| + | /ford/ n | ||
| + | |||
| + | p | ||
| + | |||
| + | Несколько действий | ||
| + | файл action | ||
| + | |||
| + | '' | ||
| + | 2,4 s/ | ||
| + | 3 d'' | ||
| + | |||
| + | Добавление строк | ||
| + | файл app_demo | ||
| + | |||
| + | '' | ||
| + | 2 a\ \\ | ||
| + | +++++++++++\ | ||
| + | ----------- | ||
| + | 3 p | ||
| + | '' | ||
| + | |||
| + | Как получть из лога ftpd айпишники злодеев-брутфорсеров: | ||
| + | |||
| + | cat p.log | grep failed |cut -f1 -d" | ||
| + | |||
| + | cat p.log -- берем лог | ||
| + | |||
| + | grep failed -- берем из лога строки содержащие слово failed | ||
| + | |||
| + | cut -f1 -d" | ||
| + | |||
| + | cut -f2 -d" | ||
| + | |||
| + | sort| uniq -- избавляемся от повторов | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||