Работа с текстом
Работа с текстом
Простые команды
sort - сортировка строк из STDIN по алфавиту
sort -r - в обратном порядке
sort -n - числовая сортировка
tr - транслитерация (замена одних букв на другие)
tr ABC abc
cat /etc/passwd | tr [:lower:] [:upper:] # (заменить строчные на заглавные)
tr -d "abcde"
tr abcdefg Z
wc - word count - считает количество слов
wc -l - количество строк
wc -c - количество символов
uniq - удаляет дубликаты строк
cut - выделяет (оставляет) отдельные поля из текста
head - вывод нескольких строк с начала
head -n10 - вывести 10 строк
tail - выводит N строк с конца
tail -n10 - последние 10 строк
tail -n+2 - вывести текст, начиная со второй строки
Команды, работающие с регулярными выражениями
grep - находит строки, содержащие текст
cat /etc/passwd | grep ftp
grep -o - оставляет в выводе только то, что нашел
grep -E - использовать расширенный синтаксис
регулярных выражений
cat /etc/passwd | grep -E '.*:.*:.*:[0-9]{3}:'
оставить только строки, содержащие трехзначный идентификатор группы
sed - Stream EDitor
sed ‘s/что/на что/’
cat /etc/passwd | sed 's/\([^:]*\):/Hello, \1:/'
заменяем имя пользователя на Hello, имя пользователя
sed ‘y/ABC/abc/’ - Транслитерация (аналог tr)
echo 'Привет, мир' | sed 'y/ри/аа/'
корректно обрабатывает кириллицу
awk - язык описания модификаций текста
echo “Hello world ha ha ha” | awk ‘{print $2;}’
/выражение/ { действие }
BEGIN { действие }
END { действие }
cat /etc/passwd | awk ‘BEGIN {a=0} {a=a+1} END {print a}’
(считаем количество строк)
Пример операций с полями
echo 1 2 3 4 5 | awk 'BEGIN {a=0}
{a=a + $2 + $3}
END {print a}'
Практика
- Посчитать суммарный размер файлов в директории (через awk)
- Посчитать словарный запас Шекспира https://www.gutenberg.org/cache/epub/100/pg100.txt
