Инструменты пользователя

Инструменты сайта


регулярные_выражения._скрипты_для_sed_и_awk

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
регулярные_выражения._скрипты_для_sed_и_awk [2013/06/19 12:02]
kirill
регулярные_выражения._скрипты_для_sed_и_awk [2014/01/29 23:11] (текущий)
Строка 9: Строка 9:
 gawk [ключи] [программа] [ список файлов] gawk [ключи] [программа] [ список файлов]
 -F fs - разделитель полей  -F fs - разделитель полей 
 +-f файл программы
  
  
  
-Создадим список с которым будем работать+ 
 +Создадим список с которым будем работать и назовем его cars.txt. 
  
 ''plym fury 1970 73 2500\\ ''plym fury 1970 73 2500\\
Строка 27: Строка 29:
 ford explor 2003 25 9500'' ford explor 2003 25 9500''
  
 +
 +Начнем работу.
 +
 +вывод всего файла.
 +
 +gawk '{print}' cars
 +
 +
 +Вывод отдельных столбцов 
 +
 +gawk '{print $1,  $2,  $5}' cars.txt 
 +
 +Использование шаблона 
 +
 +gawk  ' /chevy/ {print}' cars.txt 
 +
 +
 +Использование оператора соответствия
 +
 +gawk '$1 ~ /h/' cars.txt 
 +
 +gawk '$1 ~ /^h/' cars.txt 
 +
 +gawk '$2 ~ /^[tm]/' cars.txt
 +
 +gawk '$3 ~/5$/ {print $3, $1, "$" $5}' cars.txt 
 +
 +Сравнение
 +
 +текстовое
 +
 +gawk '"2000" <=$5 && "9000" > $5' cars.txt 
 +
 +числовое
 +
 +gawk '2000 <=$5 && 9000 > $5' cars.txt 
 +
 +
 +Оператор диаразона
 +
 +gawk '/volvo/,/bmw/' cars.txt 
 +
 +Работа с файлами программы:
 +
 +Создадим файл header
 +
 +
 +''
 +BEGIN{ print " Производ. Модель.  Год. Пробег. Цена"  }\\
 +
 +{print}
 +''
 +
 +
 +gawk -f header cars.txt  
 +
 +
 +Модифицируем файл header
 +
 +
 +''
 +BEGIN{ print " Производ. Модель.  Год. Пробег. Цена"\\
 +       print "-------------------------------------"\\
 +}\\
 +
 +\\
 +/volvo/,/bmw/  {print}\\
 +
 +END {\\
 +      print "--------------------------------------"\\
 +
 +}''
 +
 +
 +Проверим 
 +
 +
 +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 "Пользователь \tДомашний каталог \t Интерпритатор", FS=":"
 +print "---------------------------------------------------"
 +
 +}
 +
 +$3>=1000 {print $1 "\t\t" $6 "\t\t" $7}
 +
 +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 '/ford/ p' cars.txt 
 +
 +вывод только измененных строк 
 +
 +sed -n  '/ford/ p' cars.txt
 +
 +вывод по номерам строк 
 +
 +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/ford/FORD/ 
 +
 +sed -f subs_demo cars.txt
 +
 +Запись измененных строк в файл
 +
 +subs_demo2
 +
 +s/ford/FORD/w temp
 +
 +Запись диапазона строк в другой файл. 
 +
 +файл write_demo
 +
 +2,4 w temp2
 +
 +запись всех строк кроме выбранных
 +
 +
 +2,4 !w temp2
 +
 +Инструкция (n следующий.)
 +
 +файл next_demo
 +
 +3 n 
 +
 +p
 +
 +n для шаблона 
 + 
 +next_demo2 
 +
 +/ford/ n
 +
 +p                                   
 +
 +Несколько действий 
 +файл action 
 +
 +''1,3 s/ford/FORD/ \\
 +2,4 s/volvo/VOLVO \\
 +3 d'' 
 +
 +Добавление строк
 +файл app_demo
 +
 +''
 +2 a\       \\
 ++++++++++++\  \\ 
 +-----------   \\
 +3 p
 +''
 +
 +Как получть из лога ftpd айпишники злодеев-брутфорсеров:
 +
 +cat p.log | grep failed |cut -f1 -d")" |cut -f2 -d"@" |sort| uniq
 +
 +cat p.log -- берем лог
 +
 +grep failed -- берем из лога строки содержащие слово failed
 +
 +cut -f1 -d")" -- режем все что после ")"
 +
 +cut -f2 -d"@" -- режем все что до "@", остаются айпишники
 +
 +sort| uniq -- избавляемся от повторов
 +
 +
 +
 +
 +
 +
 +
 +
 + 
  
  
регулярные_выражения._скрипты_для_sed_и_awk.1371643371.txt.gz · Последнее изменение: 2013/06/19 16:02 (внешнее изменение)

DokuWiki Appliance - Powered by TurnKey Linux