man 7 glob
- globbing overview*
- any character any number of times?
- any character one time[xyz]
- x, y or z[a-z]
- characters from a to z[^az]
- not a or z{a*, b*}
- a* or b*man 7 regex
- get help about regexgrep
sed
egrep
awk
perl
BRE
we need to escape symbols like {}
, ()
, +
, ?
, |
^
- start of a string
^abc
=> abc, abcdef, abc123$
- end of a string
abc$
=> abc, llabc, 456abc.
- any symbol (except a new line)
a.c
=> abc, aaa, a2c*
- null or more of the preceding character
ab*c
=> ac, abc, abbbbc+
- one or more of the preceding characters
ab+c
=> abc, abbbc?
null or one of the preceding character
ab?c
=> ac, abc\
- escape symbol{..}
- explicit quantity of preceding character
{m,n}
- from m
to n
occurencies{m}
- exactly m
occurencies
ab{2}c
=> abbc[...]
- explicit set of characters to match
[A-Z]
- symbols range
^[a-c]
=> axxx, bxx, cxx[xyz]
- one of[^xyz]
- not one of(...)
- group of characters
(123){3}
=> 123123123BRE
\ ERE
an PRE
Name | BRE and ERE | PRE |
---|---|---|
any digit | [[:digit:]] | \d |
new line | - | \n |
tab | - | \t |
carriage return | - | \r |
space,tab,new line,cariage return | - | \s |
not space,tab, new line, carriage return | - | \S |
grep -E
- use Extended Regular Expressiongrep -G
- use Basic Regular Expressiongrep -P
- use Perl Regular Expressions $ cat names
Tania
Laura
Valentina
$ grep u names
Laura
$ grep ia names
Tania
Один из двух символов ```bash $ grep ‘[LT]’ names
$ grep ‘[0-9]’ names
$ grep '[^0-9]' names
or condition
$ grep -E ‘L|T’ names Laura Tania
$ grep ‘L|T’ names Laura Tania ```
*
- соответствует 0, одному или большему количеству вхождений предыдущего симола.
$ cat list2
ll
lol
lool
loool
$ grep -E 'o*' list2
ll
lol
lool
loool
+
- соответствует одному или большему количеству вхождений предыдущего символа
$ grep -E 'o+' list2
lol
lool
loool
$
- совпадение в конце строки
$ cat names
Tania
Laura
Valentina
Fleur
Floor
$ grep 'a$' names
Tania
Laura
Valentina
$ grep 'r$' names
Fleur
Floor
^
- совпадение в начале строки
$ grep '^Val' names
Valentina
$ grep '^F' names
Fleur
Floor
\b
- используется как разделитель слов при поиске
$ cat text
The governer is governing.
The winter is over.
Can you get over there?
$ grep '\bover\b' text
The winter is over.
Can you get over there?
-w
- поиск по словам
$ grep -w over text
The winter is over.
Can you get over there?
\(..\)
\1
grep '\([a-z]\)\1' # finds all words with two similar characters
$ grep 'r$' names
Fleur
Floor
sed
, использует регулярные выражения для модификации потока данных. $ echo Понедельник | sed 's/Понедель/Втор/'
Вторник
$ echo Понедельник | sed 's:Понедель:Втор:'
Вторник
$ echo Понедельник | sed 's_Понедель_Втор_'
Вторник
$ echo Понедельник | sed 's|Понедель|Втор|'
Вторник
sed -i
интерактивная обработка файлов (т.е. изменения содержимого файла)
$ echo Понедельник > today
$ cat today
Понедельник
$ sed -i 's/Понедель/Втор/' today
$ cat today
Вторник
.
- любой символ
$ echo 2014-04-01 | sed 's/....-..-../YYYY-MM-DD/'
YYYY-MM-DD
\s
- используется на ссылку на пробел и табуляцию
$ echo -e 'сегодня\tтеплый\tдень'
сегодня теплый день
$ echo -e 'сегодня\tтеплый\tдень' | sed 's_\s_ _g'
сегодня теплый день
?
- необязательный символ
$ cat list2
ll
lol
lool
loool
$ grep -E 'ooo?' list2
lool
loool
$ cat list2 | sed 's/ooo\?/A/'
ll
lol
lAl
lAl
$ cat list2
ll
lol
lool
loool
$ grep -E 'o{3}' list2
loool
$ cat list2 | sed 's/o\{3\}/A/'
ll
lol
lool
lAl
$ cat list2
ll
lol
lool
loool
$ grep -E 'o{2,3}' list2
lool
loool
$ grep 'o\{2,3\}' list2
lool
loool
$ cat list2 | sed 's/o\{2,3\}/A/'
ll
lol
lAl
lAl
$ echo Sunday | sed 's_\(Sun\)_\1ny_'
Sunnyday
$ echo Sunday | sed 's_\(Sun\)_\1ny \1_'
Sunny Sunday
awk -F: '{print $1}' /etc/passwd
rename
отличается между дистрибутивами Debian и Red Hat's/to_replace_regex/replace_value/
Поиск и переименование файлов по шаблону:
$ ls
abc allfiles.TXT bllfiles.TXT Scratch tennis2.TXT
abc.conf backup cllfiles.TXT temp.TXT tennis.TXT
$ rename 's/TXT/text/' *
$ ls
abc allfiles.text bllfiles.text Scratch tennis2.text
abc.conf backup cllfiles.text temp.text tennis.text
's/regex/str/g
- замена всех вхожденй строки
$ touch aTXT.TXT
$ rename -n 's/TXT/txt/g' aTXT.TXT
aTXT.TXT renamed as atxt.txt
's/regex/str/i
- замена без учета регистра
$ ls
file1.text file2.TEXT file3.txt
$ rename 's/.text/.txt/i' *
$ ls
file1.txt file2.txt file3.txt
$ ls *.txt
allfiles.txt bllfiles.txt cllfiles.txt really.txt.txt temp.txt tennis.txt
$ rename 's/.txt$/.TXT/' *.txt
$ ls *.TXT
allfiles.TXT bllfiles.TXT cllfiles.TXT really.txt.TXT
temp.TXT tennis.TXT
cat
- copy data from stdin
to stdout
.
cat file1 file2 file3
- concatenates 3 files cat > hot.txt <<stop
some string
stop
cat file1 > file2
$ tac count.txt | cat | cat | cat | cat | cat
три
два
один
tee
- перемещает данные из стандартного потока ввода stdin в стандартный поток вывода stdout, а также записывает их в файл.
$ tac count.txt | tee temp.txt | tac
один
два
три
$ cat temp.txt
три
два
один
cut
- извлекает данные из столбцов расположенных в файлах таблиц с указанием разделителя столбцов или количества байт данных в столбцах. Чаще всего используется для того чтобы убрать делимитер
cut -d: -f1,3 /etc/passwd | tail -4
cut -d" " -f1 file.txt
tr
- преобразование символов в потоке
cat tennis.txt | tr 'e' 'E'
-d
- удалить символ
cat tennis.txt | tr -d e
cat tennis.txt | tr 'a-z' 'A-Z'
wc
- подсчитывает строки, слова и символыsort
- сортирует строки
sort music.txt
-k
- сортировка строк по 1 столбцу
sort -k1 country.txt
-n
- числовая сортировка
$ sort -k3 country.txt
Belgium, Brussels, 10
Germany, Berlin, 100
Italy, Rome, 50
France, Paris, 60
Iran, Teheran, 70
$ sort -n -k3 country.txt
Belgium, Brussels, 10
Italy, Rome, 50
France, Paris, 60
Iran, Teheran, 70
Germany, Berlin, 100
uniq
- отфильтровывает повторяющиеся строкиhead
- get first 10 lines of file
head -4
- get first 4 files of filehead -4c
- get first 4 bytes of filetail
- get last 10 lines of file
tail -4
- get last 4 files of filetail -4c
- get last 4 bytes of fileless
get file content and format it into multiple pages (use space to navigate between them).tac
- print file with reversed string order
$ tac count.txt
три
два
один
fmt
- formats text