From aab6975ea501f8daf73a1ccfdceb9ad4c59d5241 Mon Sep 17 00:00:00 2001 From: Dmytro Voytko Date: Fri, 11 Oct 2024 13:34:38 +0300 Subject: [PATCH] awk, find, grep: add Ukrainian translation --- pages.uk/common/awk.md | 36 ++++++++++++++++++++++++++++++++++++ pages.uk/common/find.md | 36 ++++++++++++++++++++++++++++++++++++ pages.uk/common/grep.md | 36 ++++++++++++++++++++++++++++++++++++ 3 files changed, 108 insertions(+) create mode 100644 pages.uk/common/awk.md create mode 100644 pages.uk/common/find.md create mode 100644 pages.uk/common/grep.md diff --git a/pages.uk/common/awk.md b/pages.uk/common/awk.md new file mode 100644 index 0000000000000..070cc1d2fe56a --- /dev/null +++ b/pages.uk/common/awk.md @@ -0,0 +1,36 @@ +# awk + +> Універсальна мова програмування для роботи з файлами. +> Більше інформації: . + +- Вивести п’ятий стовпець (він же поле) у файлі, розділеному пробілами: + +`awk '{print $5}' {{шлях/до/файлу}}` + +- Вивести другий стовпець рядків, що містять "foo", у файлі, розділеному пробілами: + +`awk '/{{foo}}/ {print $2}' {{шлях/до/файлу}}` + +- Вивести останній стовпець кожного рядка у файлі, використовуючи кому (замість пробілу) як роздільник полів: + +`awk -F ',' '{print $NF}' {{шлях/до/файлу}}` + +- Підсумувати значення в першому стовпці файлу та надрукувати підсумок: + +`awk '{s+=$1} END {print s}' {{шлях/до/файлу}}` + +- Вивести кожен третій рядок, починаючи з першого: + +`awk 'NR%3==1' {{шлях/до/файлу}}` + +- Вивести різні значення залежно від умов: + +`awk '{if ($1 == "foo") print "Точний збіг foo"; else if ($1 ~ "bar") print "Частковий збіг bar"; else print "Baz"}' {{шлях/до/файлу}}` + +- Вивести всі рядки, значення 10-го стовпця яких знаходиться між min і max: + +`awk '($10 >= {{min_value}} && $10 <= {{max_value}})'` + +- Вивести таблицю користувачів із UID >=1000 із заголовком і відформатованим виводом, використовуючи двокрапку як роздільник («%-20s» означає: 20 символів рядка з вирівнюванням по лівому краю, «%6s» означає: 6 символів рядка з вирівнюванням по правому краю): + +`awk 'BEGIN {FS=":";printf "%-20s %6s %25s\n", "Name", "UID", "Shell"} $4 >= 1000 {printf "%-20s %6d %25s\n", $1, $4, $7}' /etc/passwd` diff --git a/pages.uk/common/find.md b/pages.uk/common/find.md new file mode 100644 index 0000000000000..0e799503f57eb --- /dev/null +++ b/pages.uk/common/find.md @@ -0,0 +1,36 @@ +# find + +> Пошук файлів або каталогів в дереві каталогів, рекурсивно. +> Більше інформації: . + +- Знайти файли за розширенням: + +`find {{кореневий_шлях}} -name '{{*.ext}}'` + +- Знайти файли, що відповідають декільком шаблонам шляху/імен: + +`find {{кореневий_шлях}} -path '{{**/path/**/*.ext}}' -or -name '{{*шаблон*}}'` + +- Знайти каталоги, що відповідають заданому імені, у режимі без урахування регістру: + +`find {{кореневий_шлях}} -type d -iname '{{*lib*}}'` + +- Знайти файли, що відповідають заданому шаблону, за винятком певних шляхів: + +`find {{кореневий_шлях}} -name '{{*.py}}' -not -path '{{*/site-packages/*}}'` + +- Знайти файли, що відповідають заданому діапазону розмірів, обмеживши рекурсивну глибину до "1": + +`find {{кореневий_шлях}} -maxdepth 1 -size {{+500k}} -size {{-10M}}` + +- Виконати команду для кожного файлу (використовуйте `{}` в команді, щоб отримати доступ до імені файлу): + +`find {{кореневий_шлях}} -name '{{*.ext}}' -exec {{wc -l}} {} \;` + +- Знайти всі файли, змінені сьогодні, і передати результати одній команді як аргументи: + +`find {{кореневий_шлях}} -daystart -mtime {{-1}} -exec {{tar -cvf archive.tar}} {} \+` + +- Знайти порожні файли (0 байт) або каталоги та докладно видалити їх: + +`find {{кореневий_шлях}} -type {{f|d}} -empty -delete -print` diff --git a/pages.uk/common/grep.md b/pages.uk/common/grep.md new file mode 100644 index 0000000000000..4e1f5411a219e --- /dev/null +++ b/pages.uk/common/grep.md @@ -0,0 +1,36 @@ +# grep + +> Пошук шаблонів у файлах за допомогою регулярних виразів. +> Більше інформації: . + +- Знайти шаблон у файлі: + +`grep "{{шаблон_пошуку}}" {{шлях/до/файлу}}` + +- Знайти точний рядок (відключає регулярні вирази): + +`grep {{-F|--fixed-strings}} "{{точний_рядок}}" {{шлях/до/файлу}}` + +- Знайти шаблон у всіх файлах рекурсивно в каталозі, виводячи номери рядків збігів, ігноруючи бінарні файли: + +`grep {{-r|--recursive}} {{-n|--line-number}} --binary-files {{without-match}} "{{шаблон_пошуку}}" {{шлях/до/каталогу}}` + +- Використовувати розширені регулярні вирази (підтримує `?`, `+`, `{}`, `()` та `|`), у режимі без урахування регістру: + +`grep {{-E|--extended-regexp}} {{-i|--ignore-case}} "{{шаблон_пошуку}}" {{шлях/до/файлу}}` + +- Вивести 3 рядки контексту навколо, до, або після кожного збігу: + +`grep --{{context|before-context|after-context}} 3 "{{шаблон_пошуку}}" {{шлях/до/файлу}}` + +- Вивести назву файлу та номер рядка для кожного збігу з кольоровим виводом: + +`grep {{-H|--with-filename}} {{-n|--line-number}} --color=always "{{шаблон_пошуку}}" {{шлях/до/файлу}}` + +- Шукати рядкі, що відповідають шаблону, виводячи лише відповідний текст: + +`grep {{-o|--only-matching}} "{{шаблон_пошуку}}" {{шлях/до/файлу}}` + +- Знайти в `stdin` рядки, які не відповідають шаблону: + +`cat {{шлях/до/файлу}} | grep {{-v|--invert-match}} "{{шаблон_пошуку}}"`