Regular


[ Пред. ] [ Содержание ] [ След. ]

Регулярные Выражения


Выводит информацию между знаками (")
-F-задаёт их
iwconfig wlan0 |awk -F\" '/ ESSID:/ {print $2}'
-=5GHz=-


grep -oe 'BSS.\([0-9a-f]\{2\}:\)\{5\}[0-9a-f]\{2\}'
BSS 88:e3:ab:7b:a2:e0
BSS c8:3a:35:a2:4a:08
BSS c4:6e:1f:fc:6f:3c
BSS f4:f2:6d:4c:b0:04

Подстановка к числовой переменной спереди нули.
printf "%05d" $1
где $1 - твоё число
На выходе будет всегда 5 символов, а в конце - твоё число.
То есть если $1 = 5, то получишь 00005, а если $1 = 103, то 00103

Вставляем строки
перед строкой шаблона 'http' в файле 101ru.m3u
sed -i '/http/ i\#EXTVLCOPT:http-user-agent=Mozilla\/5.0' 101ru.m3u

Добавляем префикс к выводу
$ echo ", world!" | echo "Hello$(cat -)"
Hello, world!

Выводит 3 последние строки
$ tail -3 /etc/passwd
Начиная с 5 позиции вывести 3 строки
$ ls | tail -n +5 | head -n 3

Смотрим конфиги без комментариев
$ cat config_filename | grep -vE "^#|^$"

Отфильтровать строки без учёта регистра, содержащие одно из слов one, two, three:
$ cat file | grep -iE "(one|two|three)"

Убрать пустые строки в файле
grep -v '^$' input.txt > output.txt

выводит содержимое в кавычках
echo 8. ""Ребята, напишите мне письмо"" | awk '{ print }'
1. Ребята, напишите мне письмо


Ключ -c "complement" заменит символы в соответствии с шаблоном
Этот ключ воздействует только на те символы, которые НЕ соответствуют заданному шаблону.
echo "acfdeb123" | tr -c b-d +
+c+d+b++++

Ключ --squeeze-repeats (-s) удалит все повторяющиеся последовательности символов
Может использоваться для удаления лишних пробельных символов.
echo "XXXXX" | tr --squeeze-repeats 'X'
X
$ tr "A-Z" "*" <filename или
$ tr A-Z \* <filename заменяет все символы верхнего регистра в filename на звездочки (вывод производится на stdout). В некоторых системах этот вариант может оказаться неработоспособным, тогда попробуйте
$ tr A-Z '[]'**
Ключ -d удаляет символы из заданного диапазона.
echo "abcdef" | tr -d b-d
# aef
Удалит все цифровые символы из файла "filename".
tr -d 0-9 <filename
-c, -C, --complement дополняют
use the complement of SET1
использовать состав НАБОРА1
-d, --delete удалить delete characters in SET1, do not translate
удаление символов в НАБОР1, не переводят
-s, --squeeze-repeats выжать-повторяет replace each input sequence of a repeated character that is listed in SET1 with a single occurrence of that character
заменить каждый входной последовательности повторяющихся символов, перечисленных в НАБОР1 с одного вхождения этого символа
-t, --truncate-set1 усечение-набор1 first truncate SET1 to length of SET2
начала сократить НАБОР1 НАБОР2 длине


[:alnum:] all letters and digits
все буквы и цифры
[:alpha:] all letters
все буквы
[:blank:] all horizontal whitespace
все горизонтальные пробельные символы
[:cntrl:] all control characters
все управляющие символы
[:digit:] all digits
все цифры
[:graph:] all printable characters, not including space
все печатаемые символы, не включая пробел
[:lower:] all lower case letters
все строчные буквы
[:print:] all printable characters, including
space все печатные символы, включая пробел
[:punct:] all punctuation characters
все знаки препинания
[:space:] all horizontal or vertical whitespace
все горизонтальные или вертикальные пробелы
[:upper:] all upper case letters
все буквы верхнего регистра
[:xdigit:] all hexadecimal digits
все hex значения [=CHAR=] all characters which are equivalent to CHAR все шестнадцатеричные цифры Чара все символы, которые эквивалентны в char

Выражение "[0-9]\{5\}" -- в точности соответствует подстроке из пяти десятичных цифр (символов из диапазона от 0 до 9, включительно).
echo 2222 | gawk --re-interval '/2{3}/' ### выводит строку с цифрами 2 в количестве 3-х штук подряд ######
2222
-------------------------------------------------------SED-----------------------------------------------
s/что_искать/на_что_заменять/
заменит в первой строке все подчеркивания на пробелы,
sed "1s/_/ /g"
удалит все строки, начинающиеся с «a»
sed "/^a/d"
удалит с первой по вторую и еще четвертую
$ sed -n -e 1,2p -e 4p somefile.txt
извлечение нескольких строк, со второй по четвертую строки
$ sed -n 2,4p somefile.txt
$ sed '2,4!d' somefile.txt

cat index.html | grep colTemp | sed 's/...span.*//'|sed 's/.*Temp.../Температура /'

cat -n /home/android/.bash_history | uniq -c
-n нумерует строки -c выводит количество повторов строк
погода с яндекса для коньков
curl -s https://pogoda.yandex.ru/nevinnomissk/details |sed 's/title=./\n/g'|sed 's/item-dayname">/\nДни недели /' >pogodaya
Сделать срез до конца значения:
1 $ a="123456789";echo ${a:3}
2 456789
Или на фиксированную длину, например — два символа после 3-го:
1 $ echo ${a:3:2}
2 45
Можно выполнить замену только попадающей под ШАБЛОН части:
1 $ a="111222"
2 $ echo ${a//1/3}
3 333222
При использовании одного слеша «/» — будет выполнена замена только первого совпадения:
1 $ a="111222"
2 $ echo ${a/1/3}
3 311222

grep
-c Вывести только общее число строк
-i Не учитывать регистр букв
-n Перед каждой строкой выводить ее номер
-v Учитывать только строки, не соответствующие образцу

Найти строки, содержащие сочетание букв ne:
$ grep -n ne test
1:one
9:nine
Найти строки, где букве o предшествует хотя бы один символ:
$ egrep '.+o' test
two
four
Найти строки, где стоящей в конце строки букве o предшествует хотя бы один символ:
$ grep '.*o$' test
two
1 как искать несколько различных строк
iwlist wlan0 scan |grep -e "Address:" -e "ESSID:" -e "Quality"
Cell 01 - Address: 2C:56:DC:8D:6F:04
ESSID:"ASUSkombo"
Quality=0/100 Signal level=-83 dBm
http://blog.debian-help.ru/2015/03/grep-poisk-v-linux-primeri
2 как искать несколько различных строк
iwlist wlan0 scan |grep -w 'Address\|ESSID\| Quality'
Cell 01 - Address: 00:0B:2B:51:51:0A
Quality=32/70 Signal level=-78 dBm
ESSID:"-=512=-"

Инвертный поиск
будут выведены все строки, кроме имеющих вхождение указанного слова и для этого используется параметр -v:
grep -v 'word' filename
Можно исключить что-либо из вывода поиска применив конвейер:
grep 'first_word' filename | grep -v 'second_word'
Вывод строк перед и после найденного вхождения
Для вывода нескольких строк перед вхождением используется параметры -A, а после вождения -B.
К примеру, чтобы вывести 10 строк перед и 5 после найденного вхождения используйте команду:
grep -A 5 -B 10 'word' filename
Удаление строк из файла
sudo iw dev wlan0 scan|grep -oe 'BSS [0-9a-f][0-9a-f].*\|SSID.*\|Device name.*\|signal:.*'
BSS c0:4a:00:9c:5c:56(on wlan0)
signal: -77.00 dBm
SSID: kozochka
Device name: Wireless Router TL-WR841N
BSS 30:5a:3a:a8:7a:c4(on wlan0)
signal: -87.00 dBm
SSID: Oleg
Device name: RT-N12VP

















Содержание