Команда Pipe, Grep и Sort в Linux/Unix с примери

⚡ Умно обобщение

Командите pipe, grep и sort в Linux и Unix свързват и филтрират текст: pipe предава изхода на една команда на следващата, grep търси шаблони, а sort подрежда редовете, докато филтрите трансформират данните между тях.

  • 🔗 Тръба: Символът за вертикална черта | предава изхода на една команда като вход на следващата.
  • 📄 Пейджинг: Командата cat, насочена към less, pg или more, показва дълъг файл екран по екран.
  • 🔍 grep: Командата grep търси във файл редове, които съответстват на низ или шаблон.
  • 🎚️ опции за grep: Флагове като -v, -c, -n, -i и -l инвертират, броят, номерират, игнорират главни и малки букви и изброяват файлове.
  • 🔤 сортиране: Командата за сортиране подрежда редовете във файла, като -r, -n и -f подреждат редовете обратно, числово и без значение от главни и малки букви.
  • 🧪 Филтри: Команди за филтриране като grep, sort, awk, sed и wc обработват входни данни и генерират изход.
  • 🤖 Помощ с изкуствен интелект: Асистентите с изкуствен интелект и GitHub Copilot могат да изграждат и обясняват pipe, grep и sort pailways.

Команди за прехвърляне на канали, греп и сортиране в Linux и Unix с примери

Каналните команди, grep и сортирането са сред най-използваните инструменти в Linux команден ред, защото те ви позволяват да свържете малки команди в един мощен работен процес. Тази страница обяснява всяка една с реализирани примери, след което показва как филтрите ги свързват.

Какво е канал в Linux?

Каналът (pipe) е команда в Linux, която ви позволява да използвате две или повече команди, така че изходът на една команда да служи като вход за следващата. Накратко, изходът на всеки процес се подава директно като вход към следващия, подобно на конвейер (pipe). Символът '|' обозначава канал (pipe).

Каналните команди ви помагат да комбинирате две или повече команди едновременно и да ги изпълнявате последователно. Можете да използвате мощни команди, които изпълняват сложни задачи за миг.

Нека разберем това с пример.

Когато използвате командата „cat“, за да видите файл, който обхваща няколко страници, подканата бързо прескача до последната страница на файла и не виждате съдържанието в средата.

За да избегнете това, можете да пренасочите изхода на командата „cat“ към „less“, което ви показва само една дължина на превъртане на съдържанието в даден момент.

cat filename | less

Една илюстрация би го изяснила. Диаграмата по-долу показва как канал предава изхода на една команда към следващата.

Диаграма на Linux канал, предаващ изхода на една команда като вход към следващата

'pg' и 'more' команди

Вместо „less“, можете да използвате и командата pg или more:

cat Filename | pg

or

cat Filename | more

След това можете да видите файла на части и да превъртите надолу, като просто натиснете клавиша Enter. Екранната снимка по-долу показва файл, преместен на страници с командата more.

cat се препраща към командата more, като пейджира дълъг файл екран по екран

Командата 'grep'

Да предположим, че искате да търсите конкретна информация, като например пощенски код, в текстов файл.

Можете ръчно да прегледате съдържанието сами, за да tracинформацията. По-добър вариант е да използвате Впиши команда. Тя сканира документа за желаната информация и представя резултата във формат, който желаете.

Синтаксис:

grep search_string

Нека го видим в действие. Екранната снимка по-долу показва резултата от търсенето.

Командата grep търси примерния файл за низовете Apple и Eat

Тук командата grep е претърсила файла „sample“ за низовете „Apple“ и „Eat“. Следните опции могат да се използват с тази команда.

Опция функция
-v Показва всички редове, които не отговарят на търсения низ
-c Показва само броя на съответстващите редове
-n Показва съответстващия ред и неговия номер
-i Съвпада както с главни, така и с малки букви
-l Показва само името на файла с низа

Нека опитаме опцията '-i' на същия файл, използван по-горе. Снимката на екрана по-долу показва резултата без отчитане на главни и малки букви.

grep -i извършва търсене без значение от главни и малки букви за буквата a

Използвайки опцията '-i', grep филтрира низа 'a' (без значение от главни и малки букви) от всички редове.

Командата "сортиране".

Тази команда помага за сортиране на съдържанието на файл по азбучен ред.

Синтаксисът за тази команда е:

sort Filename

Да разгледаме съдържанието на файл, показан с котка по-долу.

Командата cat показва несортираното съдържание на файла abc

Изпълнението на командата за сортиране подрежда тези редове по азбучен ред, както е показано по-долу.

команда за сортиране, подреждаща съдържанието на файла abc по азбучен ред

Има и разширения на тази команда и те са изброени по-долу.

Опция функция
-r Reverseсортиране
-n Сортира числено
-f Сортиране без отчитане на главни и малки букви

Примерът по-долу показва обратно сортиране на съдържанието във файл 'abc'.

командата sort -r обратно сортиране на съдържанието на файл abc

Какво е филтър?

Linux има много команди за филтриране, като awk, grep, sed, spell и wc. Филтърът приема входни данни от една команда, извършва известна обработка и дава изход.

Когато пренасочвате две команди, „филтрираният“ изход на първата команда се предава на следващата. Диаграмата по-долу илюстрира как един филтър се вписва в един конвейер.

Диаграма на Linux филтър, който приема входни данни, обработва ги и генерира изход

Нека разберем това с помощта на пример. Имаме следния файл „sample“, показан с cat по-долу.

Командата cat показва съдържанието на примерния файл преди филтриране

Искаме да маркираме само редовете, които не съдържат символа 'a', но резултатът трябва да е в обратен ред. За целта може да се използва следният синтаксис:

cat sample | grep -v a | sort -r

Нека разгледаме резултата, показан на екранната снимка по-долу.

cat прехвърли през grep -v и sort -r, създавайки обратно подредени редове без буквата a

Въпроси и Отговори

Канава (|) изпраща изхода на една команда директно към друга команда, свързвайки ги във верига. Пренасочването (> и <) свързва команда с файл, като записва изход във файл или чете вход от такъв. Каналните линии свързват команди; пренасочването свързва команди и файлове.

grep е съкращение от Global Regular Expression Print (глобален печат с регулярни изрази). Той сканира файл или вход ред по ред и отпечатва всеки ред, който съответства на зададения от вас шаблон. Името идва от старата команда g/re/p на редактора на ed, която извършваше същото търсене.

Командата sort има опция -u, която сортира и премахва дублиращи се редове с една стъпка: sort -u file. Можете също така да прехвърлите sort към uniq, както в sort file | uniq, тъй като uniq премахва само дубликати, които вече са съседни.

Завършете конвейера с пренасочване: cat sample | grep -va | sort -r > result.txt записва крайния резултат във файл. За да видите резултата на екрана и да го запазите едновременно, вместо това го пренасочете към командата tee.

grep търси във файловете редове, които съответстват на текстов шаблон. Командата find локализира самите файлове и директории по име, размер, тип или дата. Накратко, grep преглежда съдържанието на файловете, докато find търси файловете в дървото на директориите.

Командата tee чете от канал и записва данните едновременно на екрана и в един или повече файлове, например grep error log | tee errors.txt. Тя ви позволява да запазвате междинен изход, без да прекъсвате канала.

Асистентите с изкуствен интелект могат да предложат правилната верига от команди, прехвърлени по канал, от заявка на разбираем английски език, да обяснят непознати флагове за grep или sort и да открият грешки в канал. Инструментите за машинно обучение също сканират изхода на лог файловете, за да маркират аномалии, които ръчното филтриране би пропуснало.

Да. Копилот на GitHub може да генерира конвейери, които комбинират cat, grep и sort от кратък коментар, описващ какво ви е необходимо, и да изпълнява команди, докато пишете. Revпрегледайте всички предложения конвейер спрямо примерни данни, особено опциите, които пренареждат или изтриват редове.

Обобщете тази публикация с: