[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"page-ru-/guides/linux/awk-text-processing":3,"mdc-31z5gl-key":626,"mdc--dozx95-key":646,"mdc--lacxc4-key":685,"mdc-1d7852-key":701,"mdc--wp0she-key":731,"mdc--woyqcj-key":755,"mdc-ljy9rm-key":785,"mdc--5iwjc3-key":828,"related-/guides/linux/linux-commands-cheat-sheet,/guides/linux/text-processing-with-sed,/guides/linux/shell-scripting-basics":883},{"id":4,"title":5,"appliesTo":6,"author":12,"body":13,"canonical":563,"code":68,"createdAt":564,"description":565,"difficulty":566,"draft":567,"estimatedTime":568,"extension":569,"faq":570,"howToSteps":580,"howToTotalTime":596,"image":563,"keywords":597,"locale":606,"meta":607,"navigation":608,"path":609,"platform":610,"related":611,"section":615,"seo":616,"severity":68,"stem":617,"summary":618,"tags":619,"twitterCreator":563,"twitterSite":563,"type":624,"updatedAt":564,"__hash__":625},"content_ru/guides/linux/awk-text-processing.md","Полный гайд по обработке текста с помощью AWK в Linux",[7,8,9,10,11],"Ubuntu 20.04 LTS","Ubuntu 22.04 LTS","Debian 11","Fedora 36","Arch Linux","FixPedia Team",{"type":14,"value":15,"toc":550},"minimark",[16,21,25,29,47,50,54,59,62,84,87,130,134,137,160,163,177,180,184,187,238,241,262,272,276,287,302,305,319,323,326,370,377,400,403,406,410,479,482,486,546],[17,18,20],"h2",{"id":19},"введение-зачем-это-нужно","Введение / Зачем это нужно",[22,23,24],"p",{},"AWK — это мощный язык для обработки текста, встроенный в большинство дистрибутивов Linux. Он позволяет быстро извлекать, фильтровать, преобразовывать и объединять данные в текстовых файлах, что особенно полезно при работе с логами, CSV, DNS-зонах или любыми табличными данными. После выполнения шагов этого гайда вы сможете автоматизировать рутинные операции с текстом, используя несколько строк кода вместо громоздких скриптов на других языках.",[17,26,28],{"id":27},"требования-подготовка","Требования / Подготовка",[30,31,32,36,44],"ul",{},[33,34,35],"li",{},"Установленная ОС Linux (Ubuntu, Debian, Fedora, Arch и другие).",[33,37,38,39,43],{},"Доступ к терминалу с правами обычного пользователя (или ",[40,41,42],"code",{},"sudo"," для установки).",[33,45,46],{},"Базовое знакомство с командной строкой Linux.",[22,48,49],{},"Если AWK отсутствует, его легко установить через встроенный пакетный менеджер.",[17,51,53],{"id":52},"пошаговая-инструкция","Пошаговая инструкция",[55,56,58],"h3",{"id":57},"шаг-1-установка-awk","Шаг 1: Установка AWK",[22,60,61],{},"Проверьте, установлен ли интерпретатор:",[63,64,69],"pre",{"className":65,"code":66,"language":67,"meta":68,"style":68},"language-bash shiki shiki-themes github-light github-dark","awk --version\n","bash","",[40,70,71],{"__ignoreMap":68},[72,73,76,80],"span",{"class":74,"line":75},"line",1,[72,77,79],{"class":78},"sScJk","awk",[72,81,83],{"class":82},"sj4cs"," --version\n",[22,85,86],{},"Если выводит сообщение об ошибке, установите пакет:",[30,88,89,111],{},[33,90,91,92],{},"Для Debian/Ubuntu:",[63,93,95],{"className":65,"code":94,"language":67,"meta":68,"style":68},"sudo apt install gawk\n",[40,96,97],{"__ignoreMap":68},[72,98,99,101,105,108],{"class":74,"line":75},[72,100,42],{"class":78},[72,102,104],{"class":103},"sZZnC"," apt",[72,106,107],{"class":103}," install",[72,109,110],{"class":103}," gawk\n",[33,112,113,114],{},"Для Fedora/CentOS:",[63,115,117],{"className":65,"code":116,"language":67,"meta":68,"style":68},"sudo dnf install gawk\n",[40,118,119],{"__ignoreMap":68},[72,120,121,123,126,128],{"class":74,"line":75},[72,122,42],{"class":78},[72,124,125],{"class":103}," dnf",[72,127,107],{"class":103},[72,129,110],{"class":103},[55,131,133],{"id":132},"шаг-2-простейший-пример-вывод-всех-строк","Шаг 2: Простейший пример: вывод всех строк",[22,135,136],{},"Создайте тестовый файл:",[63,138,140],{"className":65,"code":139,"language":67,"meta":68,"style":68},"echo -e \"apple\\nbanana\\ncherry\" > fruits.txt\n",[40,141,142],{"__ignoreMap":68},[72,143,144,147,150,153,157],{"class":74,"line":75},[72,145,146],{"class":82},"echo",[72,148,149],{"class":82}," -e",[72,151,152],{"class":103}," \"apple\\nbanana\\ncherry\"",[72,154,156],{"class":155},"szBVR"," >",[72,158,159],{"class":103}," fruits.txt\n",[22,161,162],{},"Для вывода всех строк используйте:",[63,164,166],{"className":65,"code":165,"language":67,"meta":68,"style":68},"awk '{print}' fruits.txt\n",[40,167,168],{"__ignoreMap":68},[72,169,170,172,175],{"class":74,"line":75},[72,171,79],{"class":78},[72,173,174],{"class":103}," '{print}'",[72,176,159],{"class":103},[22,178,179],{},"Результат будет таким же, как и исходный файл.",[55,181,183],{"id":182},"шаг-3-извлечение-нужных-полей","Шаг 3: Извлечение нужных полей",[22,185,186],{},"Создайте файл с табличными данными:",[63,188,190],{"className":65,"code":189,"language":67,"meta":68,"style":68},"cat > data.csv \u003C\u003C 'EOF'\nID,Name,Age\n1,Alice,30\n2,Bob,25\n3,Charlie,35\nEOF\n",[40,191,192,208,214,220,226,232],{"__ignoreMap":68},[72,193,194,197,199,202,205],{"class":74,"line":75},[72,195,196],{"class":78},"cat",[72,198,156],{"class":155},[72,200,201],{"class":103}," data.csv",[72,203,204],{"class":155}," \u003C\u003C",[72,206,207],{"class":103}," 'EOF'\n",[72,209,211],{"class":74,"line":210},2,[72,212,213],{"class":103},"ID,Name,Age\n",[72,215,217],{"class":74,"line":216},3,[72,218,219],{"class":103},"1,Alice,30\n",[72,221,223],{"class":74,"line":222},4,[72,224,225],{"class":103},"2,Bob,25\n",[72,227,229],{"class":74,"line":228},5,[72,230,231],{"class":103},"3,Charlie,35\n",[72,233,235],{"class":74,"line":234},6,[72,236,237],{"class":103},"EOF\n",[22,239,240],{},"Чтобы извлечь только колонку Name, выполните:",[63,242,244],{"className":65,"code":243,"language":67,"meta":68,"style":68},"awk -F',' 'NR>1 {print $2}' data.csv\n",[40,245,246],{"__ignoreMap":68},[72,247,248,250,253,256,259],{"class":74,"line":75},[72,249,79],{"class":78},[72,251,252],{"class":82}," -F",[72,254,255],{"class":103},"','",[72,257,258],{"class":103}," 'NR>1 {print $2}'",[72,260,261],{"class":103}," data.csv\n",[22,263,264,267,268,271],{},[40,265,266],{},"NR>1"," пропускает заголовок, ",[40,269,270],{},"-F','"," устанавливает разделитель.",[55,273,275],{"id":274},"шаг-4-фильтрация-строк-по-условию","Шаг 4: Фильтрация строк по условию",[22,277,278,279,282,283,286],{},"Пусть в файле ",[40,280,281],{},"log.txt"," есть строки с уровнями ошибок. Чтобы оставить только строки, содержащие ",[40,284,285],{},"ERROR",", выполните:",[63,288,290],{"className":65,"code":289,"language":67,"meta":68,"style":68},"awk '/ERROR/ {print}' log.txt\n",[40,291,292],{"__ignoreMap":68},[72,293,294,296,299],{"class":74,"line":75},[72,295,79],{"class":78},[72,297,298],{"class":103}," '/ERROR/ {print}'",[72,300,301],{"class":103}," log.txt\n",[22,303,304],{},"Добавьте числовое условие, например, оставить ошибки с кодом выше 500:",[63,306,308],{"className":65,"code":307,"language":67,"meta":68,"style":68},"awk '/ERROR/ && $5 > 500 {print}' log.txt\n",[40,309,310],{"__ignoreMap":68},[72,311,312,314,317],{"class":74,"line":75},[72,313,79],{"class":78},[72,315,316],{"class":103}," '/ERROR/ && $5 > 500 {print}'",[72,318,301],{"class":103},[55,320,322],{"id":321},"шаг-5-объединение-данных-из-нескольких-файлов","Шаг 5: Объединение данных из нескольких файлов",[22,324,325],{},"Создайте два файла:",[63,327,329],{"className":65,"code":328,"language":67,"meta":68,"style":68},"# file1.txt\necho -e \"a\\nb\\nc\" > file1.txt\n# file2.txt\necho -e \"d\\ne\" > file2.txt\n",[40,330,331,337,351,356],{"__ignoreMap":68},[72,332,333],{"class":74,"line":75},[72,334,336],{"class":335},"sJ8bj","# file1.txt\n",[72,338,339,341,343,346,348],{"class":74,"line":210},[72,340,146],{"class":82},[72,342,149],{"class":82},[72,344,345],{"class":103}," \"a\\nb\\nc\"",[72,347,156],{"class":155},[72,349,350],{"class":103}," file1.txt\n",[72,352,353],{"class":74,"line":216},[72,354,355],{"class":335},"# file2.txt\n",[72,357,358,360,362,365,367],{"class":74,"line":222},[72,359,146],{"class":82},[72,361,149],{"class":82},[72,363,364],{"class":103}," \"d\\ne\"",[72,366,156],{"class":155},[72,368,369],{"class":103}," file2.txt\n",[22,371,372,373,376],{},"Для объединения в один файл ",[40,374,375],{},"combined.txt"," используйте:",[63,378,380],{"className":65,"code":379,"language":67,"meta":68,"style":68},"awk 'FILENAME!=ARGV[1]{print} END{print \"--- end ---\"}' file1.txt file2.txt > combined.txt\n",[40,381,382],{"__ignoreMap":68},[72,383,384,386,389,392,395,397],{"class":74,"line":75},[72,385,79],{"class":78},[72,387,388],{"class":103}," 'FILENAME!=ARGV[1]{print} END{print \"--- end ---\"}'",[72,390,391],{"class":103}," file1.txt",[72,393,394],{"class":103}," file2.txt",[72,396,156],{"class":155},[72,398,399],{"class":103}," combined.txt\n",[22,401,402],{},"В результате вы получите содержимое обоих файлов с разделителем.",[404,405],"in-article-ad",{},[17,407,409],{"id":408},"проверка-результата","Проверка результата",[30,411,412,419,426,444,453],{},[33,413,414,415,418],{},"Убедитесь, что AWK установлен: ",[40,416,417],{},"awk --version"," выводит номер версии.",[33,420,421,422,425],{},"Проверьте вывод простого примера: ",[40,423,424],{},"awk '{print}' fruits.txt"," должно показать три строки.",[33,427,428,429,432,433,436,437,436,440,443],{},"Удостоверьтесь, что извлечение полей работает: ",[40,430,431],{},"awk -F',' 'NR>1 {print $2}' data.csv"," выводит ",[40,434,435],{},"Alice",", ",[40,438,439],{},"Bob",[40,441,442],{},"Charlie",".",[33,445,446,447,450,451,443],{},"Убедитесь, что фильтрация работает: ",[40,448,449],{},"awk '/ERROR/ {print}' log.txt"," отображает только строки с текстом ",[40,452,285],{},[33,454,455,456,459,460,436,463,436,466,436,469,436,472,475,476,443],{},"Проверьте объединённый файл: ",[40,457,458],{},"cat combined.txt"," должен содержать ",[40,461,462],{},"a",[40,464,465],{},"b",[40,467,468],{},"c",[40,470,471],{},"d",[40,473,474],{},"e"," с разделителем ",[40,477,478],{},"--- end ---",[22,480,481],{},"Если все проверки пройдены, вы готовы использовать AWK для более сложных текстовых задач.",[17,483,485],{"id":484},"возможные-проблемы","Возможные проблемы",[30,487,488,499,509,527],{},[33,489,490,494,495,498],{},[491,492,493],"strong",{},"Отсутствие интерпретатора AWK"," – установите пакет ",[40,496,497],{},"gawk"," через ваш менеджер пакетов.",[33,500,501,504,505,508],{},[491,502,503],{},"Неправильный разделитель полей"," – используйте ",[40,506,507],{},"-F"," для задания пользовательского разделителя, если поля разделены не пробелами.",[33,510,511,514,515,518,519,522,523,526],{},[491,512,513],{},"Сбой при работе с Unicode"," – некоторые версии AWK ожидают ",[40,516,517],{},"-f"," или ",[40,520,521],{},"--posix","; если встречаются странные символы, попробуйте ",[40,524,525],{},"gawk -U"," для поддержки Unicode.",[33,528,529,504,532,534,535,538,539,542,543,443],{},[491,530,531],{},"Переполнение памяти при очень больших файлах",[40,533,79],{}," в режиме потоковой обработки (",[40,536,537],{},"awk '...' large_file.txt",") или ограничьте количество строк через ",[40,540,541],{},"head","/",[40,544,545],{},"tail",[547,548,549],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"title":68,"searchDepth":210,"depth":210,"links":551},[552,553,554,561,562],{"id":19,"depth":210,"text":20},{"id":27,"depth":210,"text":28},{"id":52,"depth":210,"text":53,"children":555},[556,557,558,559,560],{"id":57,"depth":216,"text":58},{"id":132,"depth":216,"text":133},{"id":182,"depth":216,"text":183},{"id":274,"depth":216,"text":275},{"id":321,"depth":216,"text":322},{"id":408,"depth":210,"text":409},{"id":484,"depth":210,"text":485},null,"2026-07-18 11:39:59","Узнайте, как обрабатывать текстовые файлы с помощью AWK в Linux. Пошаговая инструкция с примерами для извлечения, фильтрации и преобразования данных за 5 минут.","medium",false,"10-15 мин","md",[571,574,577],{"question":572,"answer":573},"Как запустить простую команду AWK для вывода первой колонки файла?","Используйте `awk '{print $1}' file.txt`. Эта команда выводит первое поле, разделённое пробелами, из каждой строки.",{"question":575,"answer":576},"Что делать, если AWK не установлен в моей Linux-системе?","Установите пакет `gawk` (или `awk` в некоторых дистрибутивах) через менеджер пакетов: `sudo apt install gawk` для Debian/Ubuntu или `sudo dnf install gawk` для Fedora.",{"question":578,"answer":579},"Как объединить несколько файлов с помощью AWK и записать результат в новый файл?","Используйте `awk 'FILENAME!=ARGV[1]{print} END{print}' file1.txt file2.txt > combined.txt`. Это объединит содержимое файлов, при необходимости добавив разделители.",[581,584,587,590,593],{"name":582,"text":583},"Установка AWK","Проверьте, установлен ли интерпретатор: `awk --version`. Если выводит сообщение об ошибке, установите пакет: `sudo apt install gawk` (Debian/Ubuntu) или `sudo dnf install gawk` (Fedora, CentOS).",{"name":585,"text":586},"Простейший пример: вывод всех строк","Создайте тестовый файл: `echo -e \"apple\\nbanana\\ncherry\" > fruits.txt`. Для вывода всех строк используйте `awk '{print}' fruits.txt`. Результат будет таким же, как и исходный файл.",{"name":588,"text":589},"Извлечение нужных полей","Создайте файл с табличными данными: `cat > data.csv \u003C\u003C 'EOF'\nID,Name,Age\n1,Alice,30\n2,Bob,25\n3,Charlie,35\nEOF`. Чтобы извлечь только колонку Name, выполните `awk -F',' 'NR>1 {print $2}' data.csv`. Флаг `-F','` устанавливает разделитель.",{"name":591,"text":592},"Фильтрация строк по условию","Пусть в файле `log.txt` есть строки с уровнями ошибок. Чтобы оставить только строки, содержащие `ERROR`, выполните `awk '/ERROR/ {print}' log.txt`. Добавьте `grep`-подобный фильтр: `awk '/ERROR/ && $5 > 500 {print}' log.txt`.",{"name":594,"text":595},"Объединение данных из нескольких файлов","Создайте два файла: `file1.txt` (`a\nb\nc`) и `file2.txt` (`d\ne`). Для объединения в один файл `combined.txt` используйте `awk 'FILENAME!=ARGV[1]{print} END{print \"--- end ---\"}' file1.txt file2.txt > combined.txt`. В результате вы получите содержимое обоих файлов с разделителем.","PT15M",[598,599,600,601,602,603,604,605],"обработка текста AWK Linux","команда awk примеры","фильтрация строк с помощью awk","выделение полей в текстовом файле awk","скрипт awk для обработки данных","awk в Ubuntu","awk в Debian","awk в Fedora","ru_RU",{},true,"/guides/linux/awk-text-processing","linux",[612,613,614],"/guides/linux/linux-commands-cheat-sheet","/guides/linux/text-processing-with-sed","/guides/linux/shell-scripting-basics","Гайды Linux",{"title":5,"description":565},"guides/linux/awk-text-processing","В этом гайде вы узнаете, как использовать AWK для обработки текстовых файлов в Linux: извлечения нужных полей, фильтрации строк, объединения данных и автоматизации рутинных задач. После выполнения шагов вы сможете уверенно работать с большими текстовыми потоками.",[620,621,622,623],"Linux","AWK","обработка текста","командная строка","guide","DiAchahNw5CfebxtczlQ5Hr8DXcEOzBpdIHxYFBv3H8",{"data":627,"body":628},{},{"type":629,"children":630},"root",[631],{"type":632,"tag":22,"props":633,"children":634},"element",{},[635,638,644],{"type":636,"value":637},"text","Используйте ",{"type":632,"tag":40,"props":639,"children":641},{"className":640},[],[642],{"type":636,"value":643},"awk '{print $1}' file.txt",{"type":636,"value":645},". Эта команда выводит первое поле, разделённое пробелами, из каждой строки.",{"data":647,"body":648},{},{"type":629,"children":649},[650],{"type":632,"tag":22,"props":651,"children":652},{},[653,655,660,662,667,669,675,677,683],{"type":636,"value":654},"Установите пакет ",{"type":632,"tag":40,"props":656,"children":658},{"className":657},[],[659],{"type":636,"value":497},{"type":636,"value":661}," (или ",{"type":632,"tag":40,"props":663,"children":665},{"className":664},[],[666],{"type":636,"value":79},{"type":636,"value":668}," в некоторых дистрибутивах) через менеджер пакетов: ",{"type":632,"tag":40,"props":670,"children":672},{"className":671},[],[673],{"type":636,"value":674},"sudo apt install gawk",{"type":636,"value":676}," для Debian/Ubuntu или ",{"type":632,"tag":40,"props":678,"children":680},{"className":679},[],[681],{"type":636,"value":682},"sudo dnf install gawk",{"type":636,"value":684}," для Fedora.",{"data":686,"body":687},{},{"type":629,"children":688},[689],{"type":632,"tag":22,"props":690,"children":691},{},[692,693,699],{"type":636,"value":637},{"type":632,"tag":40,"props":694,"children":696},{"className":695},[],[697],{"type":636,"value":698},"awk 'FILENAME!=ARGV[1]{print} END{print}' file1.txt file2.txt > combined.txt",{"type":636,"value":700},". Это объединит содержимое файлов, при необходимости добавив разделители.",{"data":702,"body":703},{},{"type":629,"children":704},[705],{"type":632,"tag":22,"props":706,"children":707},{},[708,710,715,717,722,724,729],{"type":636,"value":709},"Проверьте, установлен ли интерпретатор: ",{"type":632,"tag":40,"props":711,"children":713},{"className":712},[],[714],{"type":636,"value":417},{"type":636,"value":716},". Если выводит сообщение об ошибке, установите пакет: ",{"type":632,"tag":40,"props":718,"children":720},{"className":719},[],[721],{"type":636,"value":674},{"type":636,"value":723}," (Debian/Ubuntu) или ",{"type":632,"tag":40,"props":725,"children":727},{"className":726},[],[728],{"type":636,"value":682},{"type":636,"value":730}," (Fedora, CentOS).",{"data":732,"body":733},{},{"type":629,"children":734},[735],{"type":632,"tag":22,"props":736,"children":737},{},[738,740,746,748,753],{"type":636,"value":739},"Создайте тестовый файл: ",{"type":632,"tag":40,"props":741,"children":743},{"className":742},[],[744],{"type":636,"value":745},"echo -e \"apple\\nbanana\\ncherry\" > fruits.txt",{"type":636,"value":747},". Для вывода всех строк используйте ",{"type":632,"tag":40,"props":749,"children":751},{"className":750},[],[752],{"type":636,"value":424},{"type":636,"value":754},". Результат будет таким же, как и исходный файл.",{"data":756,"body":757},{},{"type":629,"children":758},[759],{"type":632,"tag":22,"props":760,"children":761},{},[762,764,770,772,777,779,784],{"type":636,"value":763},"Создайте файл с табличными данными: ",{"type":632,"tag":40,"props":765,"children":767},{"className":766},[],[768],{"type":636,"value":769},"cat > data.csv \u003C\u003C 'EOF' ID,Name,Age 1,Alice,30 2,Bob,25 3,Charlie,35 EOF",{"type":636,"value":771},". Чтобы извлечь только колонку Name, выполните ",{"type":632,"tag":40,"props":773,"children":775},{"className":774},[],[776],{"type":636,"value":431},{"type":636,"value":778},". Флаг ",{"type":632,"tag":40,"props":780,"children":782},{"className":781},[],[783],{"type":636,"value":270},{"type":636,"value":271},{"data":786,"body":787},{},{"type":629,"children":788},[789],{"type":632,"tag":22,"props":790,"children":791},{},[792,793,798,799,804,806,811,813,819,821,827],{"type":636,"value":278},{"type":632,"tag":40,"props":794,"children":796},{"className":795},[],[797],{"type":636,"value":281},{"type":636,"value":282},{"type":632,"tag":40,"props":800,"children":802},{"className":801},[],[803],{"type":636,"value":285},{"type":636,"value":805},", выполните ",{"type":632,"tag":40,"props":807,"children":809},{"className":808},[],[810],{"type":636,"value":449},{"type":636,"value":812},". Добавьте ",{"type":632,"tag":40,"props":814,"children":816},{"className":815},[],[817],{"type":636,"value":818},"grep",{"type":636,"value":820},"-подобный фильтр: ",{"type":632,"tag":40,"props":822,"children":824},{"className":823},[],[825],{"type":636,"value":826},"awk '/ERROR/ && $5 > 500 {print}' log.txt",{"type":636,"value":443},{"data":829,"body":830},{},{"type":629,"children":831},[832],{"type":632,"tag":22,"props":833,"children":834},{},[835,837,843,845,851,853,859,860,866,868,873,875,881],{"type":636,"value":836},"Создайте два файла: ",{"type":632,"tag":40,"props":838,"children":840},{"className":839},[],[841],{"type":636,"value":842},"file1.txt",{"type":636,"value":844}," (",{"type":632,"tag":40,"props":846,"children":848},{"className":847},[],[849],{"type":636,"value":850},"a b c",{"type":636,"value":852},") и ",{"type":632,"tag":40,"props":854,"children":856},{"className":855},[],[857],{"type":636,"value":858},"file2.txt",{"type":636,"value":844},{"type":632,"tag":40,"props":861,"children":863},{"className":862},[],[864],{"type":636,"value":865},"d e",{"type":636,"value":867},"). Для объединения в один файл ",{"type":632,"tag":40,"props":869,"children":871},{"className":870},[],[872],{"type":636,"value":375},{"type":636,"value":874}," используйте ",{"type":632,"tag":40,"props":876,"children":878},{"className":877},[],[879],{"type":636,"value":880},"awk 'FILENAME!=ARGV[1]{print} END{print \"--- end ---\"}' file1.txt file2.txt > combined.txt",{"type":636,"value":882},". В результате вы получите содержимое обоих файлов с разделителем.",[884],{"id":885,"title":886,"appliesTo":887,"author":12,"body":892,"canonical":563,"code":68,"createdAt":1346,"description":1347,"difficulty":1348,"draft":567,"estimatedTime":568,"extension":569,"faq":1349,"howToSteps":1362,"howToTotalTime":596,"image":563,"keywords":1381,"locale":606,"meta":1388,"navigation":608,"path":614,"platform":610,"related":1389,"section":615,"seo":1393,"severity":68,"stem":1394,"summary":1395,"tags":1396,"twitterCreator":563,"twitterSite":563,"type":624,"updatedAt":1346,"__hash__":1401},"content_ru/guides/linux/shell-scripting-basics.md","Основы shell-скриптинга в Linux: простые команды и автоматизация задач за 10 минут",[888,889,890,891],"Ubuntu 22.04","Debian 12","Fedora 38","openSUSE Leap 15",{"type":14,"value":893,"toc":1332},[894,896,899,901,912,914,918,922,929,961,964,980,984,991,1000,1003,1010,1014,1017,1047,1050,1078,1082,1085,1153,1157,1160,1214,1218,1221,1270,1272,1275,1294,1296,1326,1329],[17,895,20],{"id":19},[22,897,898],{},"Shell-скриптинг — это мощный инструмент для автоматизации повторяющихся задач в Linux. Используя Bash, вы можете объединять команды в исполняемые файлы, которые работают быстро и повторяемо. В этом гайде вы освоите базовые конструкции: создание исполняемого скрипта, работу с переменными, условную логику, циклы и функции. После прочтения вы сможете писать простые скрипты, которые сэкономят время и упростят повседневную работу с системой.",[17,900,28],{"id":27},[30,902,903,906,909],{},[33,904,905],{},"Любая современная дистрибутива Linux (Ubuntu 22.04, Debian 12, Fedora 38, openSUSE Leap 15 и др.).",[33,907,908],{},"Доступ к терминалу с правами обычного пользователя (для выполнения скриптов не требуются права root, но для некоторых системных задач они могут понадобиться).",[33,910,911],{},"Базовые знания командной строки Linux (знание путей, символов подчеркивания и пробелов в именах файлов).",[404,913],{},[17,915,917],{"id":916},"пошледовая-инструкция","Пошледовая инструкция",[55,919,921],{"id":920},"шаг-1-создание-исполняемого-файла","Шаг 1: Создание исполняемого файла",[22,923,924,925,928],{},"Создайте файл ",[40,926,927],{},"script.sh"," и добавьте shebang в начале, чтобы Bash интерпретировал его:",[63,930,932],{"className":65,"code":931,"language":67,"meta":68,"style":68},"cat > script.sh \u003C\u003C 'EOF'\n#!/bin/bash\necho 'Привет, мир!'\nEOF\n",[40,933,934,947,952,957],{"__ignoreMap":68},[72,935,936,938,940,943,945],{"class":74,"line":75},[72,937,196],{"class":78},[72,939,156],{"class":155},[72,941,942],{"class":103}," script.sh",[72,944,204],{"class":155},[72,946,207],{"class":103},[72,948,949],{"class":74,"line":210},[72,950,951],{"class":103},"#!/bin/bash\n",[72,953,954],{"class":74,"line":216},[72,955,956],{"class":103},"echo 'Привет, мир!'\n",[72,958,959],{"class":74,"line":222},[72,960,237],{"class":103},[22,962,963],{},"Сделайте файл исполняемым:",[63,965,967],{"className":65,"code":966,"language":67,"meta":68,"style":68},"chmod +x script.sh\n",[40,968,969],{"__ignoreMap":68},[72,970,971,974,977],{"class":74,"line":75},[72,972,973],{"class":78},"chmod",[72,975,976],{"class":103}," +x",[72,978,979],{"class":103}," script.sh\n",[55,981,983],{"id":982},"шаг-2-запуск-скрипта","Шаг 2: Запуск скрипта",[22,985,986,987,990],{},"Запустите скрипт напрямую, используя ",[40,988,989],{},"./",":",[63,992,994],{"className":65,"code":993,"language":67,"meta":68,"style":68},"./script.sh\n",[40,995,996],{"__ignoreMap":68},[72,997,998],{"class":74,"line":75},[72,999,993],{"class":78},[22,1001,1002],{},"В результате вы увидите:",[63,1004,1008],{"className":1005,"code":1007,"language":636},[1006],"language-text","Привет, мир!\n",[40,1009,1007],{"__ignoreMap":68},[55,1011,1013],{"id":1012},"шаг-3-использование-переменных","Шаг 3: Использование переменных",[22,1015,1016],{},"Переменные позволяют хранить и повторно использовать данные:",[63,1018,1020],{"className":65,"code":1019,"language":67,"meta":68,"style":68},"name='Alice'\necho \"Привет, $name!\"\n",[40,1021,1022,1034],{"__ignoreMap":68},[72,1023,1024,1028,1031],{"class":74,"line":75},[72,1025,1027],{"class":1026},"sVt8B","name",[72,1029,1030],{"class":155},"=",[72,1032,1033],{"class":103},"'Alice'\n",[72,1035,1036,1038,1041,1044],{"class":74,"line":210},[72,1037,146],{"class":82},[72,1039,1040],{"class":103}," \"Привет, ",[72,1042,1043],{"class":1026},"$name",[72,1045,1046],{"class":103},"!\"\n",[22,1048,1049],{},"Для многословных значений используйте кавычки:",[63,1051,1053],{"className":65,"code":1052,"language":67,"meta":68,"style":68},"msg=\"Добро пожаловать в Linux\"\necho \"$msg\"\n",[40,1054,1055,1065],{"__ignoreMap":68},[72,1056,1057,1060,1062],{"class":74,"line":75},[72,1058,1059],{"class":1026},"msg",[72,1061,1030],{"class":155},[72,1063,1064],{"class":103},"\"Добро пожаловать в Linux\"\n",[72,1066,1067,1069,1072,1075],{"class":74,"line":210},[72,1068,146],{"class":82},[72,1070,1071],{"class":103}," \"",[72,1073,1074],{"class":1026},"$msg",[72,1076,1077],{"class":103},"\"\n",[55,1079,1081],{"id":1080},"шаг-4-основы-условной-логики","Шаг 4: Основы условной логики",[22,1083,1084],{},"Условия позволяют ветвить выполнение скрипта:",[63,1086,1088],{"className":65,"code":1087,"language":67,"meta":68,"style":68},"value='production'\nif [ \"$value\" = \"production\" ]; then\n  echo \"Режим: продакшн\"\nelse\n  echo \"Режим: разработка\"\nfi\n",[40,1089,1090,1100,1128,1136,1141,1148],{"__ignoreMap":68},[72,1091,1092,1095,1097],{"class":74,"line":75},[72,1093,1094],{"class":1026},"value",[72,1096,1030],{"class":155},[72,1098,1099],{"class":103},"'production'\n",[72,1101,1102,1105,1108,1111,1114,1116,1119,1122,1125],{"class":74,"line":210},[72,1103,1104],{"class":155},"if",[72,1106,1107],{"class":1026}," [ ",[72,1109,1110],{"class":103},"\"",[72,1112,1113],{"class":1026},"$value",[72,1115,1110],{"class":103},[72,1117,1118],{"class":155}," =",[72,1120,1121],{"class":103}," \"production\"",[72,1123,1124],{"class":1026}," ]; ",[72,1126,1127],{"class":155},"then\n",[72,1129,1130,1133],{"class":74,"line":216},[72,1131,1132],{"class":82},"  echo",[72,1134,1135],{"class":103}," \"Режим: продакшн\"\n",[72,1137,1138],{"class":74,"line":222},[72,1139,1140],{"class":155},"else\n",[72,1142,1143,1145],{"class":74,"line":228},[72,1144,1132],{"class":82},[72,1146,1147],{"class":103}," \"Режим: разработка\"\n",[72,1149,1150],{"class":74,"line":234},[72,1151,1152],{"class":155},"fi\n",[55,1154,1156],{"id":1155},"шаг-5-создание-цикла","Шаг 5: Создание цикла",[22,1158,1159],{},"Циклы повторяют действия несколько раз:",[63,1161,1163],{"className":65,"code":1162,"language":67,"meta":68,"style":68},"for i in 1 2 3 4 5; do\n  echo \"Итерация $i\"\ndone\n",[40,1164,1165,1197,1209],{"__ignoreMap":68},[72,1166,1167,1170,1173,1176,1179,1182,1185,1188,1191,1194],{"class":74,"line":75},[72,1168,1169],{"class":155},"for",[72,1171,1172],{"class":1026}," i ",[72,1174,1175],{"class":155},"in",[72,1177,1178],{"class":103}," 1",[72,1180,1181],{"class":103}," 2",[72,1183,1184],{"class":103}," 3",[72,1186,1187],{"class":103}," 4",[72,1189,1190],{"class":103}," 5",[72,1192,1193],{"class":1026},"; ",[72,1195,1196],{"class":155},"do\n",[72,1198,1199,1201,1204,1207],{"class":74,"line":210},[72,1200,1132],{"class":82},[72,1202,1203],{"class":103}," \"Итерация ",[72,1205,1206],{"class":1026},"$i",[72,1208,1077],{"class":103},[72,1210,1211],{"class":74,"line":216},[72,1212,1213],{"class":155},"done\n",[55,1215,1217],{"id":1216},"шаг-6-добавление-функций","Шаг 6: Добавление функций",[22,1219,1220],{},"Функции упрощают реиспользование кода:",[63,1222,1224],{"className":65,"code":1223,"language":67,"meta":68,"style":68},"greet() {\n  local name=$1\n  echo \"Привет, $name!\"\n}\ngreet \"Bob\"\n",[40,1225,1226,1234,1248,1258,1263],{"__ignoreMap":68},[72,1227,1228,1231],{"class":74,"line":75},[72,1229,1230],{"class":78},"greet",[72,1232,1233],{"class":1026},"() {\n",[72,1235,1236,1239,1242,1244],{"class":74,"line":210},[72,1237,1238],{"class":155},"  local",[72,1240,1241],{"class":1026}," name",[72,1243,1030],{"class":155},[72,1245,1247],{"class":1246},"s4XuR","$1\n",[72,1249,1250,1252,1254,1256],{"class":74,"line":216},[72,1251,1132],{"class":82},[72,1253,1040],{"class":103},[72,1255,1043],{"class":1026},[72,1257,1046],{"class":103},[72,1259,1260],{"class":74,"line":222},[72,1261,1262],{"class":1026},"}\n",[72,1264,1265,1267],{"class":74,"line":228},[72,1266,1230],{"class":78},[72,1268,1269],{"class":103}," \"Bob\"\n",[17,1271,409],{"id":408},[22,1273,1274],{},"Убедитесь, что скрипт работает как ожидается:",[1276,1277,1278,1284,1287],"ol",{},[33,1279,1280,1281],{},"Проверьте синтаксис: ",[40,1282,1283],{},"bash -n script.sh",[33,1285,1286],{},"Запустите скрипт и сравните вывод с ожидаемым результатом.",[33,1288,1289,1290,1293],{},"Если нужны дополнительные отладочные данные, добавьте ",[40,1291,1292],{},"set -x"," в начало скрипта.",[17,1295,485],{"id":484},[30,1297,1298,1312,1320],{},[33,1299,1300,1307,1308,1311],{},[491,1301,1302,1303,1306],{},"Команда не найдена (",[40,1304,1305],{},"command not found",")"," – убедитесь, что команды установлены (",[40,1309,1310],{},"sudo apt-get install \u003Cpackage>",").",[33,1313,1314,1317,1318,443],{},[491,1315,1316],{},"Доступ запрещён"," – скрипт может требовать прав root для записи в системные каталоги; используйте ",[40,1319,42],{},[33,1321,1322,1325],{},[491,1323,1324],{},"Неправильные кавычки"," – смешение кавычек приводит к необычному поведению; используйте одинарные кавычки для статичных строк и двойные для переменных.",[22,1327,1328],{},"Теперь у вас есть базовый набор навыков для написания полезных и автоматизированных shell-скриптов в Linux. Удачного кодирования!",[547,1330,1331],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":68,"searchDepth":210,"depth":210,"links":1333},[1334,1335,1336,1344,1345],{"id":19,"depth":210,"text":20},{"id":27,"depth":210,"text":28},{"id":916,"depth":210,"text":917,"children":1337},[1338,1339,1340,1341,1342,1343],{"id":920,"depth":216,"text":921},{"id":982,"depth":216,"text":983},{"id":1012,"depth":216,"text":1013},{"id":1080,"depth":216,"text":1081},{"id":1155,"depth":216,"text":1156},{"id":1216,"depth":216,"text":1217},{"id":408,"depth":210,"text":409},{"id":484,"depth":210,"text":485},"2026-07-12 22:21:44","Узнайте, как написать первый скрипт на Bash, использовать переменные, циклы и функции. Пошаговая инструкция для начинающих за 10 минут — начните автоматизировать задачи в Linux уже сегодня.","easy",[1350,1353,1356,1359],{"answer":1351,"question":1352},"Создайте файл `script.sh`, добавьте shebang `#!/bin/bash` и напишите простую команду, например `echo Hello`. Затем сделайте файл исполняемым: `chmod +x script.sh`.","С чего начать написание первого shell-скрипта?",{"answer":1354,"question":1355},"Параметры передаются через `$1`, `$2` и т.д. Например, `echo First param: $1`. Для обработки всех параметров используйте цикл `for arg in \"$@\"; do ... done`.","Как передать параметры скрипту при запуске?",{"answer":1357,"question":1358},"Возможная причина — отсутствие интерпретатора Bash в shebang или скрипт запущен без прав на исполнение. Убедитесь, что файл имеет правильный shebang `#!/bin/bash` и права `+x`.","Почему скрипт выдает ошибку «команда не найдена»?",{"answer":1360,"question":1361},"Используйте `set -x` для трассировки, `bash -n` для синтаксической проверки и добавляйте `echo` для вывода промежуточных значений. Также полезен `grep -n` для поиска строк кода.","Как отладить ошибки в скрипте?",[1363,1366,1369,1372,1375,1378],{"name":1364,"text":1365},"Создание исполняемого файла","Создайте файл `script.sh`, добавьте shebang `#!/bin/bash` и напишите команду `echo 'Привет, мир!'`. Сделайте файл исполняемым: `chmod +x script.sh`.",{"name":1367,"text":1368},"Запуск скрипта","Запустите скрипт напрямую: `./script.sh`. Bash интерпретирует shebang и выполнит команды.",{"name":1370,"text":1371},"Использование переменных","Присвойте значение переменной: `name='Alice'`, затем выведите её: `echo \"Привет, $name!\"`. Используйте кавычки для многословных значений.",{"name":1373,"text":1374},"Основы условной логики","Добавьте условие с `if [ \"$var\" = \"value\" ]; then echo \"Найдено\"; else echo \"Не найдено\"; fi`. Это позволяет ветвить выполнение.",{"name":1376,"text":1377},"Создание цикла","Используйте `for i in 1 2 3; do echo \"Итерация $i\"; done`, чтобы повторить действия несколько раз.",{"name":1379,"text":1380},"Добавление функций","Определите функцию: `my_func() { echo \"Внутри функции\"; }`. Вызовите её: `my_func`. Функции упрощают реиспользование кода.",[1382,1383,1384,1385,1386,1387],"обучение shell-скриптингу Linux","как написать скрипт на Bash","базовые конструкции shell-скриптов","переменные и циклы в Bash","автоматизация задач в Linux скриптами","код ошибки shell-скрипта 127",{},[1390,1391,1392],"/guides/linux/scripting-advanced","/guides/linux/creating-shell-functions","/guides/linux/debugging-shell-scripts",{"title":886,"description":1347},"guides/linux/shell-scripting-basics","В этом гайде вы научитесь создавать простые shell-скрипты, использовать базовые конструкции и автоматизировать повседневные задачи в Linux. После прочтения вы сможете писать скрипты, которые экономят время и упрощают работу с системой.",[620,1397,1398,1399,1400],"Bash","скриптинг","автоматизация","программирование","jdpguhww-vgpE7fADUqznP3mHoitcm01XliHkp1gvPM"]