grep, sed, awk и компания
Поиск по тексту, замена в файлах, выборка колонок, сортировка и подсчёт.
grep
Рекурсивный поиск с номерами строк
grep -rn '<pattern>' <path>
Поиск без учёта регистра
grep -i '<pattern>' <file>
Строки, которые НЕ совпадают
grep -v '<pattern>' <file>
Показать по 3 строки контекста вокруг совпадений
grep -C 3 '<pattern>' <file>
Только имена файлов с совпадениями
grep -rl '<pattern>' <path>
Расширенный regex с несколькими вариантами
grep -E 'error|warn|fatal' <file>
Быстрый поиск с учётом .gitignore (ripgrep)
rg '<pattern>'
sed
Заменить текст в файле на месте
sed -i 's/<old>/<new>/g' <file>
На macOS: sed -i '' 's/old/new/g' file
Вывести строки с 10 по 20
sed -n '10,20p' <file>
Удалить строки по шаблону
sed -i '/<pattern>/d' <file>
Замена во всех файлах проектапродвинутая
grep -rl '<old>' <path> | xargs sed -i 's/<old>/<new>/g'
awk
Вывести первую колонку
awk '{print $1}' <file>
Другой разделитель (CSV)
awk -F',' '{print $2}' <file>
Сумма по колонкепродвинутая
awk '{sum += $3} END {print sum}' <file>
Строки, где значение в колонке больше порогапродвинутая
awk '$3 > 100' <file>
Сортировка и подсчёт
Посчитать строки
wc -l <file>
Уникальные строки с количеством, самые частые сверху
sort <file> | uniq -c | sort -rn | head
Топ IP в access-логе nginxпродвинутая
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20Вырезать 2-е поле с разделителем «:»
cut -d ':' -f 2 <file>
Сравнить два файла
diff -u <file1> <file2>
Пайпы и перенаправление
Записать stdout и stderr в файл
<command> > output.log 2>&1
Показать вывод и одновременно сохранить в файл
<command> | tee output.log
Выполнить команду для каждой строки вводапродвинутая
cat <file> | xargs -I {} echo "item {}"