[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-rabota-v-cli-bash-kak-ispolzovat-awk-dlya-obrabotki-teksta":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":21,"progress":22,"seo":23},157,"kak-ispolzovat-awk-dlya-obrabotki-teksta",4,"rabota-v-cli-bash","Работа в CLI (Bash)","💻","Как использовать awk для обработки текста?","**`awk`** — мощный язык обработки структурированного текста. По умолчанию разделяет каждую строку на поля по пробелам\u002Fтабуляциям и позволяет работать с каждым полем отдельно.\n\n### Аналогия\n\nЕсли `grep` — это фильтр (пропускает или нет), а `sed` — корректор (заменяет текст), то `awk` — это аналитик с калькулятором: он умеет разбирать таблицы на колонки, считать суммы, фильтровать по условиям и форматировать отчёты.\n\n### Базовые понятия\n\n+ `$0` — вся строка целиком\n+ `$1`, `$2`, ... `$N` — поля (колонки) строки\n+ `NR` — номер текущей строки (Number of Record)\n+ `NF` — количество полей в текущей строке (Number of Fields)\n+ `FS` — разделитель полей (Field Separator), по умолчанию пробел\u002Fтаб\n+ `OFS` — разделитель полей на выходе (Output Field Separator)\n\n### Выбор колонок\n\n```bash\n# Вывести первую колонку\nawk '{print $1}' file.txt\n\n# Вывести первую и третью колонки\nawk '{print $1, $3}' file.txt\n\n# Вывести последнюю колонку\nawk '{print $NF}' file.txt\n\n# Указать разделитель (например, для CSV)\nawk -F',' '{print $1, $3}' data.csv\n\n# Для \u002Fetc\u002Fpasswd (разделитель :)\nawk -F':' '{print $1, $6}' \u002Fetc\u002Fpasswd\n```\n\n### Условия и фильтрация\n\n```bash\n# Строки, где третье поле больше 100\nawk '$3 > 100' data.txt\n\n# Строки, содержащие \"ERROR\"\nawk '\u002FERROR\u002F' app.log\n\n# Строки, где первое поле равно \"admin\"\nawk '$1 == \"admin\"' users.txt\n\n# Комбинация условий\nawk '$3 > 50 && $4 == \"active\"' data.txt\n\n# Строки длиннее 80 символов\nawk 'length > 80' file.txt\n```\n\n### Форматированный вывод (printf)\n\n```bash\n# Форматированный вывод\nawk '{printf \"%-20s %10d\\n\", $1, $3}' data.txt\n\n# Вывод с заголовком\nawk 'BEGIN {printf \"%-15s %s\\n\", \"Name\", \"Size\"} {printf \"%-15s %d\\n\", $1, $5}' \u003C(ls -l)\n```\n\n### Блоки BEGIN и END\n\n```bash\n# Подсчитать сумму значений в третьем поле\nawk '{sum += $3} END {print \"Total:\", sum}' data.txt\n\n# Среднее значение\nawk '{sum += $3; count++} END {print \"Average:\", sum\u002Fcount}' data.txt\n\n# Заголовок + итог\nawk 'BEGIN {print \"=== Report ===\"} {print $0} END {print \"Lines:\", NR}' file.txt\n```\n\n### Практические примеры\n\n```bash\n# Анализ использования диска (топ-5 по размеру)\ndu -sh \u002Fvar\u002Flog\u002F* | sort -rh | head -5\n\n# Вывести PID и имя Java-процессов\nps aux | awk '\u002F[j]ava\u002F {print $2, $11}'\n\n# Суммировать размер файлов определённого типа\nfind . -name \"*.jar\" -ls | awk '{total += $7} END {printf \"Total: %.2f MB\\n\", total\u002F1024\u002F1024}'\n\n# Разбор CSV с заголовком\nawk -F',' 'NR==1 {for(i=1;i\u003C=NF;i++) header[i]=$i; next} {print header[1]\"=\"$1, header[3]\"=\"$3}' data.csv\n\n# Подсчёт запросов по HTTP-статусу из access.log\nawk '{print $9}' access.log | sort | uniq -c | sort -rn\n```\n\n> **На собеседовании:** интервьюер ожидает умение извлекать нужные колонки (`$1`, `$NF`), использовать `-F` для указания разделителя и знать про блоки `BEGIN`\u002F`END`. Частая ошибка — не знать про `$NF` (последнее поле) и пытаться считать колонки вручную.","","middle",[15,16,17,18,19,20],"cli","sed","потоковый редактор","linux","обработка текста","bash",[],null,{"title":24,"description":25,"ogTitle":26,"ogDescription":27,"keywords":28,"schemaAnswer":34,"featuredSnippetReady":35},"Команда sed в Linux: потоковый редактор текста — Gymterview","Как использовать sed для обработки текста в Linux: замена строк, удаление, вставка, регулярные выражения. Примеры sed с ключами -i, -n, -e.","Команда sed — потоковая обработка текста в Linux | Gymterview","Разбор команды sed: замена текста (s\u002F\u002F\u002F), удаление строк (d), вставка, адресация по номерам строк и регулярным выражениям.",[16,29,17,30,31,32,33],"sed linux","sed замена","sed примеры","sed -i","обработка текста bash","Sed (stream editor) — потоковый редактор для преобразования текста. Основные операции: s\u002Fold\u002Fnew\u002F — замена, d — удаление строк, i\u002Fa — вставка до\u002Fпосле строки. Поддерживает адресацию по номерам строк и регулярным выражениям. Ключ -i редактирует файл на месте.",true]