Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
регулярные_выражения._скрипты_для_sed_и_awk [2013/06/19 13:35] kirill |
регулярные_выражения._скрипты_для_sed_и_awk [2014/01/29 23:11] (текущий) |
||
---|---|---|---|
Строка 125: | Строка 125: | ||
'' | '' | ||
+ | Функция 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 -- избавляемся от повторов | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||