Кусок файла примера zxc1.csv:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
name;date;ip;allow;blok printer;15;192.168.0.1;yes;no printer;15;192.168.0.4;yes;no printer;15;192.168.0.4;yes;no printer;15;192.168.0.1;yes;no printer;15;192.168.0.1;yes;no printer;15;192.168.0.1;yes;no printer;15;192.168.0.1;yes;no printer;15;192.168.0.7;yes;no printer;15;192.168.0.1;yes;no printer;15;192.168.0.1;yes;no printer;15;192.168.0.7;yes;no printer;15;192.168.0.1;yes;no printer;15;192.168.0.1;yes;no printer;15;192.168.0.1;yes;no printer;15;192.168.0.1;yes;no printer;15;192.168.0.7;yes;no printer;15;192.168.0.1;yes;no printer;15;192.168.0.1;yes;no Решение: cat zxc.csv | cut -f 3 -d";" | sort | uniq awk -F ';' '{ print $1,$3 }' zxc.csv | sort | uniq |
Кусок файла примера zxc1.csv:
1 2 3 4 5 6 7 8 9 10 |
Алексей,+2 (522) 7234-246-57 Александр,+3 (234944) 123-73-33 Ярослав,+4 (455) 62205-111-87 Максим,+5 (315) 51014-656-923 Дмитрий,+6 (2062) 6434-994-2983 Алексей,+7 (927435) 40302-1945-39844 Решение: cat zxc1.csv | sed 's/ //g' | sed 's/-//g' | sed 's/(//' | sed 's/)//g' | sed 's/+//g' | sed 's/,/ /g' cat zxc1.csv | sed -e '{s/-//g}' -e '{s/(//g}' -e 's/)//g' -e '{s/+//g}' -e '{s/ //g}' -e '{s/,/ /}' |
Примеры sed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
sed 's/string1/string2/g' example.txt - заменить string1 на string2 в файле example.txt и вывести содержимое sed '/ *#/d; /^$/d' example.txt - удалить пустые строки и комментарии из файла example.txt sed '/^$/d' example.txt - удалить пустые строки и комментарии из файла example.txt sed '/serv*/a\ \' - добавить пустую строку после слова serv sed 's/serv/\nserv/' - добавить строку перед словом serv sed -e '1d' exampe.txt - удалить первую строку из файла example.txt sed -n '/string1/p' - отобразить только строки содержащие string1 sed -e 's/string//g' example.txt - удалить строку string1 из текста файла example.txt не изменяя всего остального sed -e 's/ *$//' example.txt - удалить пустые символы в конце каждой строки файла example.txt sed -n '5p;5q' example.txt - вывести пятую строку sed -n '2,5p' example.txt - вывести строки со второй по пятую sed -e 's/00*/0/g' example.txt - Заменить последовательность из любого количества нулей одним нулём Примем убираем пробелы, знаки"()+-", в конце знак "," заменяем на пробел: cat zxc1.csv | sed 's/ //g' | sed 's/-//g' | sed 's/(//' | sed 's/)//g' | sed 's/+//g' | sed 's/,/ /g' > rasilka.csv.edit Используем специальный ключ "-e" убираем пробелы, знаки"()+-", в конце знак "," заменяем на пробел cat zxc1.csv | sed -e 's/ //g' -e 's/-//g' -e 's/(//g' -e 's/)//g' -e 's/+//g' -e 's/,/ /g' sed - пример шаблонов --------------------- 8d - удалить 8-ю строку /^$/d - удалить все пустые строки 1,/^$/d - удалить все строки до первой пустой строки, включительно /Jones/p - вывести строки, содержащие "Jones" (с ключом -n) s/Windows/Linux/ - в каждой строке, заменить первое встретившееся слово "Windows" на слово "Linux" s/BSOD/stability/g - в каждой строке, заменить все встретившиеся слова "BSOD" на "stability" s/ *$// - удалить все пробелы в конце каждой строки s/00*/0/g - заменить все последовательности ведущих нулей одним символом "0" /GUI/d - удалить все строки, содержащие "GUI" s/GUI//g - удалить все найденные "GUI", оставляя остальную часть строки без изменений 's/:.*//' - удалить от все последующие символы после двоеточия(:) -------------------- |
Примеры работы с cut, sort, unic, sed, awk, tr
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
cat zxc.csv | cut -f 3 -d";" | sort | uniq Поясним про (cut -f 3 -d";") в данном примере: (-f 3) выбор столбца 3 (-d";") выбор разделителя (;) Поясним про (sort), он не обходим что бы работа (uniq) была выполнена правильно Поясним про unic - покажет уникальные значения cat zxc.csv | sort | uniq | cut -d ";" -f1,3 | sed "s/;/ /g" Поясним про (sort) - выполняет сортировку Поясним про (unic) - покажет уникальные значения Поясним про (cut -d ";" -f1,3) в данном примере: (-f1,3) выбор столбца 3,4 (-d";") выбор разделителя (;) Поясним про (sed "s/;/ /g"), тут выполняется поиск символа ";" и замена на символ пробела " " cat zxc.csv | sort | uniq | cut -d ";" -f1,3 | sed "s/;/ /g" > zxc2.txt - выполняем (sort,unic,cut,sed) и сохранение в файл zxc2.txt sed -i 's/printer/robot/g' zxc2.txt - ищем в файле (zxc2.txt) слово (printer) меняем его на (robot) sed -i 's/robot/slon/1' zxc2.txt - ищем в файле (zxc2.txt) слово (robot) меняем его на (slon) awk -F ';' '{ print $1,$3 }' zxc.csv | sort | uniq - с помощью (awk -F ';' '{ print $1,$3 }' zxc.csv ) выводим на экран 1 и 2 столбцы из файла zxc.csv, сортируем, показываем уникальные строки cat zxc.csv | sed -e 's/;/ /g' | cut -d ' ' -f 1,3 | sort | uniq cat zxc.csv | awk -F';' '{print $1,$3}' | sort | uniq cat zxc.csv | sed -e 's/;/ /g' | cut -d ' ' -f 1,3 | sort | uniq cat zxc1.csv | sed -e '{s/-//g}' -e '{s/(//g}' -e 's/)//g' -e '{s/+//g}' -e '{s/ //g}' -e '{s/,/ /}' cat zxc.csv | awk -F ';' '{print $1,$3}' | sort | uniq cat zxc.csv | cut -f 1,3 -d ';' | sed 's/;/ /g' | sort | uniq cat zxc.csv | cut -f 1,3 -d ';' | tr ';' ' ' | sort | uniq history | cut -c 8-120 ps -uax | awk -F ' ' '{print $1,$2,$11}' ls -latr | awk -F ' ' '{print $3,$9}' |
Регистр:
1 2 |
echo 'word' | tr '[:lower:]' '[:upper:]' - перевести символы нижнего регистра в верхний echo 'word' | tr '[:upper:]' '[:lower:]' - перевести символы верхнего регистра в нижний |
Ещё один пример достать нужное
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
1.txt ----- mv: cannot stat '/etc/bareos/bareos-dir.d/catalog': No such file or directory mv: cannot stat '/etc/bareos/bareos-dir.d/director': No such file or directory mv: cannot stat '/etc/bareos/bareos-dir.d/messages': No such file or directory mv: cannot stat '/etc/bareos/bareos-dir.d/user': No such file or directory mv: cannot stat '/etc/bareos/bareos-dir.d/fileset': No such file or directory mv: cannot stat '/etc/bareos/bareos-dir.d/client': No such file or directory mv: cannot stat '/etc/bareos/bareos-dir.d/job': No such file or directory mv: cannot stat '/etc/bareos/bareos-dir.d/jobdefs': No such file or directory mv: cannot stat '/etc/bareos/bareos-dir.d/pool': No such file or directory mv: cannot stat '/etc/bareos/bareos-dir.d/schedule': No such file or directory mv: cannot stat '/etc/bareos/bareos-dir.d/storage': No such file or directory mv: cannot stat '/etc/bareos/bareos-dir.d/use': No such file or directory ---- Достаем серединку: cat 1.txt | cut -c `echo "mv: cannot stat " | wc -c`-`echo "mv: cannot stat '/etc/bareos/bareos-dir.d/schedule':"| wc -c` | sed -e "s/'//g" -e 's/:.*//' cat 1.txt | cut -d "'" -f 2 cat 1.txt | awk -F"'" {print $2} |
awk вставка текста в начало / конец строки
1 2 3 4 5 |
cat file.txt | awk '{print "xxx " $0}' cat file.txt | awk '{print $0 " xxx"}' cat file.txt | awk '{print "xxx " $0 " xxx"}' cat file.txt | awk '{print $1}' | awk '{print "xxx " $0}' |
ссылки:
1 |
https://www.opennet.ru/tips/1811_awk_shell.shtml - awk |