Как да използвате командата look в Linux

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

Изгледът на Ubuntu Командата се държи различно

За една проста, но полезна команда, погледът със сигурност ми даде заобикаляне, когато проучвах тази статия. Имаше два проблема: съвместимост и документация.

Тази статия беше проверена с Ubuntu, Fedora и Manjaro. look беше в комплект с всяка от тези дистрибуции, което беше страхотно. Проблемът беше, че поведението не беше еднакво и при трите. Версията на Ubuntu беше много различна. Според Manpages на Ubuntu, поведението трябва да е същото.

В крайна сметка го разбрах. look традиционно използва a двоично търсене, докато Ubuntu look използва a линейно търсене. Онлайн страниците на Ubuntu за Bionic Beaver (18.04), Cosmic Cuttlefish (18.10) и Disco Dingo (19.04) казват, че версията на Ubuntu използва двоично търсене, което не е така.

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

man look

Превъртайки надолу през страницата на ръководството, виждаме секцията, която описва тази версия на външен вид, използвайки линейно вместо двоично търсене.

  Как да инсталирате Pgadmin на Linux

Моралът на историята е първо да проверите страниците на местния човек.

Линейно търсене срещу двоично търсене

Методът за двоично търсене е по-бърз и по-ефективен от линейното търсене. Работата с големи файлове прави това много очевидно. Недостатъкът на двоичното търсене е, че вашият файл трябва да бъде сортиран. Ако не искате да сортирате файла си, сортирайте негово копие и след това го използвайте с look.

Ще демонстрираме това на друго място в тази статия. Само имайте предвид, че във Fedora, Manjaro и аз очаквам по-голямата част от останалата част от света на Linux, ще трябва да създадете сортирано копие на вашия файл и да работите с него.

Инсталиране на думи

look може да работи с всеки текстов файл, който изберете, или може да работи с локалния речников файл „words“.

На Manjaro трябва да инсталирате файла „words“. Използвайте тази команда:

sudo pacman -Syu words

Използване на външен вид

За тази статия ще работим с текстов файл на Едуард Лир стихотворение „The Jumblies“.

Нека да разгледаме съдържанието му с тази команда:

less the-jumblies.txt

Ето първата част от стихотворението. Имайте предвид, че използваме Ubuntu, така че файлът остава несортиран. За Fedora и Manjaro ще работим със сортирано копие на файла, което ще разгледаме по-късно в тази статия.

  Какво представляват stdin, stdout и stderr в Linux?

Ако потърсим редове, които започват с думата „Те“, ще разберем част от това, което направиха Jumblies.

look They the-jumblies.txt

look отговаря, като изброи тези редове:

Изход от

Пренебрегване на регистъра на символите

За да накарате външния вид да игнорира разликите между главни и малки букви, използвайте опцията -f (игнориране на главни букви). Отново използвахме „те“ като дума за търсене, но този път е с малки букви.

look -f they the-jumblies.txt

Този път резултатите включват допълнителна линия.

Изход от

Редът, който започва с „ТЕ“, беше пропуснат в последния набор от резултати, защото е с главни букви и не съответства на нашата дума за търсене „Те“.

Пренебрегването на главни и малки букви позволява на look да го включи в резултатите.

Използване на look със сортиран файл

Ако вашата Linux дистрибуция има версия на външен вид, която следва традиционното поведение на използване на двоично търсене, трябва или да сортирате файла си, или да работите с негово сортирано копие.

Нека повторим командата за търсене на „Те“, но този път на Manjaro.

Както можете да видите, не бяха върнати резултати. Но знаем, че в стихотворението има редове, които започват с думата „Те“.

Нека направим сортирано копие на файла. Ако ще използвате опциите -f (игнориране на главни и малки букви) или -d (само буквено-цифрови знаци и интервали) с look, трябва да ги използвате, когато сортирате файла.

Опцията -o (изход) ви позволява да посочите името на файла, към който трябва да се добавят сортираните редове. В този пример това е „sorted.txt“.

sort -f -d the-jumblies.txt -o sorted.txt

Нека използваме look към файла sorted.txt и след това използваме опциите -f и -d.

  Как да възстановите изтрити файлове в Linux с testdisk

Сега получаваме резултатите, които очаквахме.

Имайте предвид само интервали и букви и цифри

За да изглеждате, игнорирайте всичко, което не е буквено-цифров знак или интервал, използвайте опцията -d (буквено-цифрова).

Нека да видим дали има думи, които започват с „О.

look -f oh the-jumblies.txt

Не се връщат резултати от look.

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

look -f -d oh the-jumblies.txt

Този път получаваме резултат. Не намерихме този ред преди, защото кавичките и удивителният знак объркаха търсенето.

Изход от

Указване на прекратяващ символ

Можете да кажете на look да използва конкретен знак като завършващ знак. Обикновено интервалите и краят на редовете се използват като завършващ знак.

Опцията -t (завършващ знак) ни позволява да посочим символа, който бихме искали да използваме. В този пример ще използваме знака за апостроф. Трябва да го цитираме с обратна наклонена черта, така че погледът да знае, че не отваряме низ.

Също така цитираме думата за търсене, защото включва интервал. Търсим две думи.

look -f -t ' "they call" the-jumblies.txt

Резултатите съвпадат с термина за търсене, завършващ с апострофа, който използвахме като завършващ знак.

Използване на look Without a File

Ако не предоставите име на файл в командния ред, look uses файла с думите.

командата:

дава следните резултати:

Това са всички думи във файла, които започват с думата „кръг“.

вижте не повече

Това е всичко, което трябва да се търси.

Това е доста лесно, след като знаете, че има различни поведения в различните дистрибуции на Linux и сте достигнали дъното дали вашата версия използва двоично или линейно търсене.