Има различни приложения на командата 'awk' в Linux. Например може да се използва за отпечатване на съдържанието на текстов файл. Първият ред на много текстови файлове съдържа заглавието на файла и понякога първият ред трябва да бъде пропуснат при отпечатване на съдържанието на файла. В този урок ще ви покажем как да изпълните тази задача, като използвате командата 'awk'.
Създайте текстов файл
За да продължите заедно с този урок, създайте текстов файл с разделители, разделен с раздели, с име списък с книги.текст със следното съдържание. Този файл съдържа списък с книги със съответните автори. В този урок ще ви покажем как да отпечатате различни части от този файл, след като пропуснете първия ред.
Киберсигурност с Баш Пол Тронконе, Карл АлбингКоманден ред Kung Fu Jason Cannon
Команден ред на Linux Travis Booth
Баш в лесни стъпки Майк Макграт
Unix в лесни стъпки Майк Макграт
Пример 1: Пропуснете първия ред на файл, като използвате NR и оператора '>'
Променливата NR показва броя на записите във файл. Следващата команда 'awk' използва променливата NR, за да пропусне първия ред на файл. Стойността на NR е 1 за първия ред. Следващата команда ще отпечата редове, за които стойността на NR е по-голяма от 1.
$ cat booklist.текст$ awk '(NR> 1)' списък с книги.текст
След изпълнението на горните команди ще се получи следният изход. Резултатът включва всички редове, различни от първия ред на файла.
Пример 2: Пропуснете първия ред, като използвате NR и '!= 'оператор
Следващата команда 'awk' е подобна на тази в предишния пример. Както и да е '!= 'тук се използва оператор за сравнение вместо'> '.
$ cat booklist.текст$ awk 'NR!= 1 'списък с книги.текст
След изпълнението на горните команди ще се получи следният изход. Резултатът показва всички редове, различни от първия ред на файла.
Пример 3: Пропуснете първия ред на файл, като използвате условен оператор
Следващата команда 'awk' ще отпечата редовете на файла, ако операторът if е верен. Тук изразът if ще бъде верен само когато стойността на NR не е равна на 1.
$ cat booklist.текст$ awk 'if (NR!= 1) print 'списък с книги.текст
След изпълнението на горните команди ще се получи следният изход. Резултатът включва всички редове с изключение на първия ред на файла.
Пример 4: Отпечатайте имената на книгите от файла, но пропуснете първия ред
В този пример се използват две команди „awk“ за отпечатване на всички имена на книги с изключение на първата. Командата 'awk' ще прочете първата колона от файла въз основа на разделителя на полето (\ t) и ще изпрати изхода към втората команда 'awk'. Втората команда 'awk' ще отпечата желания изход.
$ cat booklist.текст$ awk -F "\ t" 'print $ 1' списък с книги.txt | awk 'NR!= 1 print '
След изпълнението на горните команди ще се получи следният изход. Резултатът показва всички имена на книги, с изключение на тези на първата книга.
Пример 5: Форматирайте съдържанието на файла, след като пропуснете първия ред
Опцията '-F', NR променлива и функцията printf се използват в следната команда 'awk' за генериране на форматиран изход след пропускане на първия ред. Командата ще раздели съдържанието на файла на колони въз основа на \ t и printf ще отпечата първата и втората колони, когато стойността на NR е поне 2.
$ cat booklist.текст$ awk -F '\ t' 'NR> = 2 printf "% 30s% 20s \ n", $ 1, $ 2' списък с книги.текст
След изпълнението на горните команди ще се получи следният изход. Резултатът показва форматираното съдържание на файла, с изключение на първия ред на файла.
Пример 6: Отпечатайте имената на книгите, след като пропуснете първия ред, като използвате NR и NF
Следващата команда „awk“ използва опцията „-F“ и NR и NF за отпечатване на имената на книгите след пропускане на първата книга. Опцията '-F' се използва за разделяне на съдържанието на файловата база на \ t. NR се използва за пропускане на първия ред, а NF се използва за отпечатване само на първата колона.
$ cat booklist.текст$ awk -F '\ t' 'NR> 1 && NF = 1' списък с книги.текст
След изпълнението на горните команди ще се получи следният изход. Резултатът включва всички имена на книги във файла, с изключение на тези на първата книга.
Пример 7: Отпечатайте форматираните имена на автори, след като пропуснете първия ред
Следващата команда 'awk' използва опцията '-F' и условен израз, за да отпечата имената на авторите след пропускане на първия ред. Тук стойността NR се използва в условието if. Тук „Име на автора: \ n \ n“ ще бъде отпечатано като първи ред вместо съдържанието от първия ред. Имената на автора от файла ще бъдат отпечатани за останалите стойности на NR.
$ cat booklist.текст$ awk -F '\ t' 'if (NR == 1) printf "\ nИме на автора: \ n \ n"; else printf "% s \ n", $ 2 'списък с книги.текст
След изпълнението на горните команди ще се получи следният изход. Резултатът показва текста „Име на автора:“ с нов ред и всички имена на автори се отпечатват с изключение на първото.
Заключение
Първият ред на файл може да бъде пропуснат с помощта на различни команди на Linux. Както е показано в този урок, има различни начини да пропуснете първия ред на файл, като използвате командата 'awk'. Забележително е, че променливата NR на командата 'awk' може да се използва за пропускане на първия ред на всеки файл.