Работа с текстом

Работа с текстом

Простые команды

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}'

Практика

  1. Посчитать суммарный размер файлов в директории (через awk)
  2. Посчитать словарный запас Шекспира https://www.gutenberg.org/cache/epub/100/pg100.txt
Written on September 19, 2016