logo

Polecenie AWK w systemie Unix/Linux z przykładami

Awk to język skryptowy używany do manipulowania danymi i generowania raportów. Język programowania poleceń awk nie wymaga kompilacji i pozwala użytkownikowi używać zmiennych, funkcji numerycznych, funkcji łańcuchowych i operatorów logicznych.

Awk to narzędzie umożliwiające programiście pisanie małych, ale skutecznych programów w formie instrukcji definiujących wzorce tekstu, które mają być wyszukiwane w każdym wierszu dokumentu oraz akcję, jaka ma zostać podjęta w przypadku znalezienia dopasowania w obrębie linia. Awk jest najczęściej używany do skanowania i przetwarzania wzorców. Przeszukuje jeden lub więcej plików, aby sprawdzić, czy zawierają linie pasujące do określonych wzorców, a następnie wykonuje powiązane działania.



Awk jest skrótem od nazwisk twórców – Aho, Weinberger i Kernighan.

CO MOŻEMY ZROBIĆ Z AWK?

1. Operacje AWK:
(a) Skanuje plik linia po linii
(b) Dzieli każdą linię wejściową na pola
(c) Porównuje linię/pola wejściowe ze wzorcem
(d) Wykonuje akcje na dopasowanych liniach



2. Przydatne dla:
(a) Przekształć pliki danych
(b) Tworzenie sformatowanych raportów

3. Konstrukcje programistyczne:
(a) Sformatuj linie wyjściowe
(b) Operacje arytmetyczne i na łańcuchach
(c) Warunki i pętle

Składnia:



awk options 'selection _criteria {action }' input-file>plik-wyjściowy>

Opcje:

-f program-file : Reads the AWK program source from the file program-file, instead of from the first command line argument. -F fs : Use fs for the input field separator>

Przykładowe polecenia

Przykład:

Rozważ następujący plik tekstowy jako plik wejściowy dla wszystkich poniższych przypadków:

$cat>pracownik.txt>
ajay manager account 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik director purchase 80000>

1. Domyślne zachowanie Awk: Domyślnie Awk wypisuje każdą linię danych z określonego pliku.

$ awk '{print}' employee.txt>

Wyjście:

ajay manager account 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik director purchase 80000>

W powyższym przykładzie nie podano żadnego wzoru. Zatem działania mają zastosowanie do wszystkich linii. Akcja print bez argumentu domyślnie wypisuje całą linię, zatem bezbłędnie wypisuje wszystkie linie pliku.

gimp zapisz jako JPEG

2. Wydrukuj linie odpowiadające podanemu wzorowi.

$ awk '/manager/ {print}' employee.txt>

Wyjście:

ajay manager account 45000 varun manager sales 50000 amit manager account 47000>

W powyższym przykładzie polecenie awk wypisuje całą linię pasującą do „managera”.

3. Podział linii na pola: Dla każdego rekordu, tj. linii, polecenie awk domyślnie dzieli rekord rozdzielony białymi znakami i zapisuje go w zmiennych $n. Jeśli linia ma 4 słowa, będzie przechowywana odpowiednio w , , i . Ponadto $ 0 reprezentuje całą linię.

$ awk '{print ,}' employee.txt>

Wyjście:

ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>

W powyższym przykładzie 1 USD i 4 USD reprezentują odpowiednio pola Nazwisko i Wynagrodzenie.

Wbudowane zmienne w Awk

Wbudowane zmienne Awk obejmują zmienne pól — 1 USD, 2 USD, 3 USD itd. (0 USD to cała linia) — które dzielą linię tekstu na pojedyncze słowa lub fragmenty zwane polami.

    NR: Polecenie NR utrzymuje aktualną liczbę rekordów wejściowych. Pamiętaj, że rekordy to zazwyczaj linie. Polecenie Awk wykonuje instrukcje wzorca/akcji raz dla każdego rekordu w pliku. NF: Polecenie NF zlicza liczbę pól w bieżącym rekordzie wejściowym. FS: Polecenie FS zawiera znak separatora pól, który służy do podziału pól w linii wejściowej. Wartość domyślna to białe znaki, co oznacza spacje i znaki tabulacji. FS można ponownie przypisać do innego znaku (zwykle w BEGIN), aby zmienić separator pól. RS: Polecenie RS przechowuje bieżący znak separatora rekordu. Ponieważ domyślnie wierszem wejściowym jest rekord wejściowy, domyślnym znakiem oddzielającym rekordy jest znak nowej linii. OFS: Polecenie OFS przechowuje separator pól wyjściowych, który oddziela pola, gdy Awk je drukuje. Wartość domyślna to puste miejsce. Ilekroć print ma kilka parametrów oddzielonych przecinkami, wyświetli wartość OFS pomiędzy każdym parametrem. ORS: Polecenie ORS przechowuje separator rekordów wyjściowych, który oddziela linie wyjściowe, gdy Awk je drukuje. Wartość domyślna to znak nowej linii. print automatycznie wyświetla zawartość ORS na końcu tego, co jest przeznaczone do wydrukowania.

Przykłady:

Użycie wbudowanych zmiennych NR (numer linii wyświetlacza)

$ awk '{print NR,

Awk to język skryptowy używany do manipulowania danymi i generowania raportów. Język programowania poleceń awk nie wymaga kompilacji i pozwala użytkownikowi używać zmiennych, funkcji numerycznych, funkcji łańcuchowych i operatorów logicznych.

Awk to narzędzie umożliwiające programiście pisanie małych, ale skutecznych programów w formie instrukcji definiujących wzorce tekstu, które mają być wyszukiwane w każdym wierszu dokumentu oraz akcję, jaka ma zostać podjęta w przypadku znalezienia dopasowania w obrębie linia. Awk jest najczęściej używany do skanowania i przetwarzania wzorców. Przeszukuje jeden lub więcej plików, aby sprawdzić, czy zawierają linie pasujące do określonych wzorców, a następnie wykonuje powiązane działania.

Awk jest skrótem od nazwisk twórców – Aho, Weinberger i Kernighan.

CO MOŻEMY ZROBIĆ Z AWK?

1. Operacje AWK:
(a) Skanuje plik linia po linii
(b) Dzieli każdą linię wejściową na pola
(c) Porównuje linię/pola wejściowe ze wzorcem
(d) Wykonuje akcje na dopasowanych liniach

2. Przydatne dla:
(a) Przekształć pliki danych
(b) Tworzenie sformatowanych raportów

3. Konstrukcje programistyczne:
(a) Sformatuj linie wyjściowe
(b) Operacje arytmetyczne i na łańcuchach
(c) Warunki i pętle

Składnia:

awk options 'selection _criteria {action }' input-file>plik-wyjściowy>

Opcje:

-f program-file : Reads the AWK program source from the file program-file, instead of from the first command line argument. -F fs : Use fs for the input field separator>

Przykładowe polecenia

Przykład:

Rozważ następujący plik tekstowy jako plik wejściowy dla wszystkich poniższych przypadków:

$cat>pracownik.txt>
ajay manager account 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik director purchase 80000>

1. Domyślne zachowanie Awk: Domyślnie Awk wypisuje każdą linię danych z określonego pliku.

$ awk '{print}' employee.txt>

Wyjście:

ajay manager account 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik director purchase 80000>

W powyższym przykładzie nie podano żadnego wzoru. Zatem działania mają zastosowanie do wszystkich linii. Akcja print bez argumentu domyślnie wypisuje całą linię, zatem bezbłędnie wypisuje wszystkie linie pliku.

2. Wydrukuj linie odpowiadające podanemu wzorowi.

$ awk '/manager/ {print}' employee.txt>

Wyjście:

ajay manager account 45000 varun manager sales 50000 amit manager account 47000>

W powyższym przykładzie polecenie awk wypisuje całą linię pasującą do „managera”.

3. Podział linii na pola: Dla każdego rekordu, tj. linii, polecenie awk domyślnie dzieli rekord rozdzielony białymi znakami i zapisuje go w zmiennych $n. Jeśli linia ma 4 słowa, będzie przechowywana odpowiednio w $1, $2, $3 i $4. Ponadto $ 0 reprezentuje całą linię.

$ awk '{print $1,$4}' employee.txt>

Wyjście:

ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>

W powyższym przykładzie 1 USD i 4 USD reprezentują odpowiednio pola Nazwisko i Wynagrodzenie.

Wbudowane zmienne w Awk

Wbudowane zmienne Awk obejmują zmienne pól — 1 USD, 2 USD, 3 USD itd. (0 USD to cała linia) — które dzielą linię tekstu na pojedyncze słowa lub fragmenty zwane polami.

    NR: Polecenie NR utrzymuje aktualną liczbę rekordów wejściowych. Pamiętaj, że rekordy to zazwyczaj linie. Polecenie Awk wykonuje instrukcje wzorca/akcji raz dla każdego rekordu w pliku. NF: Polecenie NF zlicza liczbę pól w bieżącym rekordzie wejściowym. FS: Polecenie FS zawiera znak separatora pól, który służy do podziału pól w linii wejściowej. Wartość domyślna to białe znaki, co oznacza spacje i znaki tabulacji. FS można ponownie przypisać do innego znaku (zwykle w BEGIN), aby zmienić separator pól. RS: Polecenie RS przechowuje bieżący znak separatora rekordu. Ponieważ domyślnie wierszem wejściowym jest rekord wejściowy, domyślnym znakiem oddzielającym rekordy jest znak nowej linii. OFS: Polecenie OFS przechowuje separator pól wyjściowych, który oddziela pola, gdy Awk je drukuje. Wartość domyślna to puste miejsce. Ilekroć print ma kilka parametrów oddzielonych przecinkami, wyświetli wartość OFS pomiędzy każdym parametrem. ORS: Polecenie ORS przechowuje separator rekordów wyjściowych, który oddziela linie wyjściowe, gdy Awk je drukuje. Wartość domyślna to znak nowej linii. print automatycznie wyświetla zawartość ORS na końcu tego, co jest przeznaczone do wydrukowania.

Przykłady:

Użycie wbudowanych zmiennych NR (numer linii wyświetlacza)

$ awk '{print NR,$0}' employee.txt>

Wyjście:

1 ajay manager account 45000 2 sunil clerk account 25000 3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000 7 sunil peon sales 13000 8 satvik director purchase 80000>

W powyższym przykładzie polecenie awk z NR wypisuje wszystkie linie wraz z numerem linii.

Użycie wbudowanych zmiennych NF (wyświetl ostatnie pole)

$ awk '{print $1,$NF}' employee.txt>

Wyjście:

ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>

W powyższym przykładzie $1 reprezentuje imię i nazwisko, a $NF reprezentuje wynagrodzenie. Możemy uzyskać wynagrodzenie za pomocą $NF , gdzie $NF reprezentuje ostatnie pole.

Inne zastosowanie wbudowanych zmiennych NR (linia wyświetlacza od 3 do 6)

$ awk 'NR==3, NR==6 {print NR,$0}' employee.txt>

Wyjście:

3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>

Więcej przykładów

Dla podanego pliku tekstowego:

$cat>geeksforgeeks.txt A B C Tarun A12 1 Człowiek B6 2 Praveen M42 3>

1) Aby wydrukować pierwszy element wraz z numerem wiersza (NR) oddzielonym znakiem – z każdej linii w geeksforgeeks.txt:

$ awk '{print NR '- ' $1 }' geeksforgeeks.txt>
1 - A 2 - Tarun 3 – Manav 4 - Praveen>

2) Aby zwrócić drugą kolumnę/element z geeksforgeeks.txt:

Pytanie powinno brzmieć: – Aby zwrócić drugą kolumnę/element z geeksforgeeks.txt:

$ awk '{print $2}' geeksforgeeks.txt>
B A12 B6 M42>

3) Aby wydrukować dowolną niepustą linię, jeśli jest obecna

$ awk 'NF <0' geeksforgeeks.txt>

tutaj NF powinno wynosić 0 nie mniej niż i użytkownik musi również wydrukować numer linii:

poprawna odpowiedź: awk „NF == 0 {wydrukuj NR}” geeksforgeeks.txt

LUB

awk „NF <= 0 {wydrukuj NR}” geeksforgeeks.txt

0>

4) Aby znaleźć długość najdłuższej linii występującej w pliku:

$ awk '{ if (length($0)>max) max = długość (0 $) } KONIEC { drukuj max }' geeksforgeeks.txt>
13>

5) Aby policzyć linie w pliku:

$ awk 'END { print NR }' geeksforgeeks.txt>
3>

6) Drukowanie linii zawierających więcej niż 10 znaków:

$ awk 'length($0)>10' geeksforgeeks.txt>
Tarun A12 1 Praveen M42 3>

7) Aby znaleźć/sprawdzić dowolny ciąg w dowolnej kolumnie:

$ awk '{ if($3 == 'B6') print $0;}' geeksforgeeks.txt>

8) Aby wydrukować kwadraty pierwszych liczb od 1 do n, powiedzmy 6:

$ awk 'BEGIN { for(i=1;i<=6;i++) print 'square of', i, 'is',i*i; }'>
square of 1 is 1 square of 2 is 4 square of 3 is 9 square of 4 is 16 square of 5 is 25 square of 6 is 36>


}' employee.txt>

Wyjście:

tablica ciągów c programowanie
1 ajay manager account 45000 2 sunil clerk account 25000 3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000 7 sunil peon sales 13000 8 satvik director purchase 80000>

W powyższym przykładzie polecenie awk z NR wypisuje wszystkie linie wraz z numerem linii.

Użycie wbudowanych zmiennych NF (wyświetl ostatnie pole)

$ awk '{print ,$NF}' employee.txt>

Wyjście:

ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>

W powyższym przykładzie reprezentuje imię i nazwisko, a $NF reprezentuje wynagrodzenie. Możemy uzyskać wynagrodzenie za pomocą $NF , gdzie $NF reprezentuje ostatnie pole.

Inne zastosowanie wbudowanych zmiennych NR (linia wyświetlacza od 3 do 6)

$ awk 'NR==3, NR==6 {print NR,

Awk to język skryptowy używany do manipulowania danymi i generowania raportów. Język programowania poleceń awk nie wymaga kompilacji i pozwala użytkownikowi używać zmiennych, funkcji numerycznych, funkcji łańcuchowych i operatorów logicznych.

Awk to narzędzie umożliwiające programiście pisanie małych, ale skutecznych programów w formie instrukcji definiujących wzorce tekstu, które mają być wyszukiwane w każdym wierszu dokumentu oraz akcję, jaka ma zostać podjęta w przypadku znalezienia dopasowania w obrębie linia. Awk jest najczęściej używany do skanowania i przetwarzania wzorców. Przeszukuje jeden lub więcej plików, aby sprawdzić, czy zawierają linie pasujące do określonych wzorców, a następnie wykonuje powiązane działania.

Awk jest skrótem od nazwisk twórców – Aho, Weinberger i Kernighan.

CO MOŻEMY ZROBIĆ Z AWK?

1. Operacje AWK:
(a) Skanuje plik linia po linii
(b) Dzieli każdą linię wejściową na pola
(c) Porównuje linię/pola wejściowe ze wzorcem
(d) Wykonuje akcje na dopasowanych liniach

2. Przydatne dla:
(a) Przekształć pliki danych
(b) Tworzenie sformatowanych raportów

3. Konstrukcje programistyczne:
(a) Sformatuj linie wyjściowe
(b) Operacje arytmetyczne i na łańcuchach
(c) Warunki i pętle

Składnia:

awk options 'selection _criteria {action }' input-file>plik-wyjściowy>

Opcje:

-f program-file : Reads the AWK program source from the file program-file, instead of from the first command line argument. -F fs : Use fs for the input field separator>

Przykładowe polecenia

Przykład:

Rozważ następujący plik tekstowy jako plik wejściowy dla wszystkich poniższych przypadków:

$cat>pracownik.txt>
ajay manager account 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik director purchase 80000>

1. Domyślne zachowanie Awk: Domyślnie Awk wypisuje każdą linię danych z określonego pliku.

$ awk '{print}' employee.txt>

Wyjście:

ajay manager account 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik director purchase 80000>

W powyższym przykładzie nie podano żadnego wzoru. Zatem działania mają zastosowanie do wszystkich linii. Akcja print bez argumentu domyślnie wypisuje całą linię, zatem bezbłędnie wypisuje wszystkie linie pliku.

2. Wydrukuj linie odpowiadające podanemu wzorowi.

$ awk '/manager/ {print}' employee.txt>

Wyjście:

ajay manager account 45000 varun manager sales 50000 amit manager account 47000>

W powyższym przykładzie polecenie awk wypisuje całą linię pasującą do „managera”.

3. Podział linii na pola: Dla każdego rekordu, tj. linii, polecenie awk domyślnie dzieli rekord rozdzielony białymi znakami i zapisuje go w zmiennych $n. Jeśli linia ma 4 słowa, będzie przechowywana odpowiednio w $1, $2, $3 i $4. Ponadto $ 0 reprezentuje całą linię.

$ awk '{print $1,$4}' employee.txt>

Wyjście:

ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>

W powyższym przykładzie 1 USD i 4 USD reprezentują odpowiednio pola Nazwisko i Wynagrodzenie.

Wbudowane zmienne w Awk

Wbudowane zmienne Awk obejmują zmienne pól — 1 USD, 2 USD, 3 USD itd. (0 USD to cała linia) — które dzielą linię tekstu na pojedyncze słowa lub fragmenty zwane polami.

    NR: Polecenie NR utrzymuje aktualną liczbę rekordów wejściowych. Pamiętaj, że rekordy to zazwyczaj linie. Polecenie Awk wykonuje instrukcje wzorca/akcji raz dla każdego rekordu w pliku. NF: Polecenie NF zlicza liczbę pól w bieżącym rekordzie wejściowym. FS: Polecenie FS zawiera znak separatora pól, który służy do podziału pól w linii wejściowej. Wartość domyślna to białe znaki, co oznacza spacje i znaki tabulacji. FS można ponownie przypisać do innego znaku (zwykle w BEGIN), aby zmienić separator pól. RS: Polecenie RS przechowuje bieżący znak separatora rekordu. Ponieważ domyślnie wierszem wejściowym jest rekord wejściowy, domyślnym znakiem oddzielającym rekordy jest znak nowej linii. OFS: Polecenie OFS przechowuje separator pól wyjściowych, który oddziela pola, gdy Awk je drukuje. Wartość domyślna to puste miejsce. Ilekroć print ma kilka parametrów oddzielonych przecinkami, wyświetli wartość OFS pomiędzy każdym parametrem. ORS: Polecenie ORS przechowuje separator rekordów wyjściowych, który oddziela linie wyjściowe, gdy Awk je drukuje. Wartość domyślna to znak nowej linii. print automatycznie wyświetla zawartość ORS na końcu tego, co jest przeznaczone do wydrukowania.

Przykłady:

Użycie wbudowanych zmiennych NR (numer linii wyświetlacza)

$ awk '{print NR,$0}' employee.txt>

Wyjście:

1 ajay manager account 45000 2 sunil clerk account 25000 3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000 7 sunil peon sales 13000 8 satvik director purchase 80000>

W powyższym przykładzie polecenie awk z NR wypisuje wszystkie linie wraz z numerem linii.

Użycie wbudowanych zmiennych NF (wyświetl ostatnie pole)

$ awk '{print $1,$NF}' employee.txt>

Wyjście:

ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>

W powyższym przykładzie $1 reprezentuje imię i nazwisko, a $NF reprezentuje wynagrodzenie. Możemy uzyskać wynagrodzenie za pomocą $NF , gdzie $NF reprezentuje ostatnie pole.

Inne zastosowanie wbudowanych zmiennych NR (linia wyświetlacza od 3 do 6)

$ awk 'NR==3, NR==6 {print NR,$0}' employee.txt>

Wyjście:

3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>

Więcej przykładów

Dla podanego pliku tekstowego:

$cat>geeksforgeeks.txt A B C Tarun A12 1 Człowiek B6 2 Praveen M42 3>

1) Aby wydrukować pierwszy element wraz z numerem wiersza (NR) oddzielonym znakiem – z każdej linii w geeksforgeeks.txt:

$ awk '{print NR '- ' $1 }' geeksforgeeks.txt>
1 - A 2 - Tarun 3 – Manav 4 - Praveen>

2) Aby zwrócić drugą kolumnę/element z geeksforgeeks.txt:

Pytanie powinno brzmieć: – Aby zwrócić drugą kolumnę/element z geeksforgeeks.txt:

$ awk '{print $2}' geeksforgeeks.txt>
B A12 B6 M42>

3) Aby wydrukować dowolną niepustą linię, jeśli jest obecna

$ awk 'NF <0' geeksforgeeks.txt>

tutaj NF powinno wynosić 0 nie mniej niż i użytkownik musi również wydrukować numer linii:

poprawna odpowiedź: awk „NF == 0 {wydrukuj NR}” geeksforgeeks.txt

LUB

awk „NF <= 0 {wydrukuj NR}” geeksforgeeks.txt

0>

4) Aby znaleźć długość najdłuższej linii występującej w pliku:

$ awk '{ if (length($0)>max) max = długość (0 $) } KONIEC { drukuj max }' geeksforgeeks.txt>
13>

5) Aby policzyć linie w pliku:

$ awk 'END { print NR }' geeksforgeeks.txt>
3>

6) Drukowanie linii zawierających więcej niż 10 znaków:

$ awk 'length($0)>10' geeksforgeeks.txt>
Tarun A12 1 Praveen M42 3>

7) Aby znaleźć/sprawdzić dowolny ciąg w dowolnej kolumnie:

$ awk '{ if($3 == 'B6') print $0;}' geeksforgeeks.txt>

8) Aby wydrukować kwadraty pierwszych liczb od 1 do n, powiedzmy 6:

$ awk 'BEGIN { for(i=1;i<=6;i++) print 'square of', i, 'is',i*i; }'>
square of 1 is 1 square of 2 is 4 square of 3 is 9 square of 4 is 16 square of 5 is 25 square of 6 is 36>


}' employee.txt>

Wyjście:

3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>

Więcej przykładów

Dla podanego pliku tekstowego:

$cat>geeksforgeeks.txt A B C Tarun A12 1 Człowiek B6 2 Praveen M42 3>

1) Aby wydrukować pierwszy element wraz z numerem wiersza (NR) oddzielonym znakiem – z każdej linii w geeksforgeeks.txt:

ukryte aplikacje
$ awk '{print NR '- '  }' geeksforgeeks.txt>
1 - A 2 - Tarun 3 – Manav 4 - Praveen>

2) Aby zwrócić drugą kolumnę/element z geeksforgeeks.txt:

Pytanie powinno brzmieć: – Aby zwrócić drugą kolumnę/element z geeksforgeeks.txt:

$ awk '{print }' geeksforgeeks.txt>
B A12 B6 M42>

3) Aby wydrukować dowolną niepustą linię, jeśli jest obecna

$ awk 'NF <0' geeksforgeeks.txt>

tutaj NF powinno wynosić 0 nie mniej niż i użytkownik musi również wydrukować numer linii:

poprawna odpowiedź: awk „NF == 0 {wydrukuj NR}” geeksforgeeks.txt

LUB

awk „NF <= 0 {wydrukuj NR}” geeksforgeeks.txt

0>

4) Aby znaleźć długość najdłuższej linii występującej w pliku:

$ awk '{ if (length(

Awk to język skryptowy używany do manipulowania danymi i generowania raportów. Język programowania poleceń awk nie wymaga kompilacji i pozwala użytkownikowi używać zmiennych, funkcji numerycznych, funkcji łańcuchowych i operatorów logicznych.

Awk to narzędzie umożliwiające programiście pisanie małych, ale skutecznych programów w formie instrukcji definiujących wzorce tekstu, które mają być wyszukiwane w każdym wierszu dokumentu oraz akcję, jaka ma zostać podjęta w przypadku znalezienia dopasowania w obrębie linia. Awk jest najczęściej używany do skanowania i przetwarzania wzorców. Przeszukuje jeden lub więcej plików, aby sprawdzić, czy zawierają linie pasujące do określonych wzorców, a następnie wykonuje powiązane działania.

Awk jest skrótem od nazwisk twórców – Aho, Weinberger i Kernighan.

CO MOŻEMY ZROBIĆ Z AWK?

1. Operacje AWK:
(a) Skanuje plik linia po linii
(b) Dzieli każdą linię wejściową na pola
(c) Porównuje linię/pola wejściowe ze wzorcem
(d) Wykonuje akcje na dopasowanych liniach

2. Przydatne dla:
(a) Przekształć pliki danych
(b) Tworzenie sformatowanych raportów

3. Konstrukcje programistyczne:
(a) Sformatuj linie wyjściowe
(b) Operacje arytmetyczne i na łańcuchach
(c) Warunki i pętle

Składnia:

awk options 'selection _criteria {action }' input-file>plik-wyjściowy>

Opcje:

-f program-file : Reads the AWK program source from the file program-file, instead of from the first command line argument. -F fs : Use fs for the input field separator>

Przykładowe polecenia

Przykład:

Rozważ następujący plik tekstowy jako plik wejściowy dla wszystkich poniższych przypadków:

$cat>pracownik.txt>
ajay manager account 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik director purchase 80000>

1. Domyślne zachowanie Awk: Domyślnie Awk wypisuje każdą linię danych z określonego pliku.

$ awk '{print}' employee.txt>

Wyjście:

ajay manager account 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik director purchase 80000>

W powyższym przykładzie nie podano żadnego wzoru. Zatem działania mają zastosowanie do wszystkich linii. Akcja print bez argumentu domyślnie wypisuje całą linię, zatem bezbłędnie wypisuje wszystkie linie pliku.

2. Wydrukuj linie odpowiadające podanemu wzorowi.

$ awk '/manager/ {print}' employee.txt>

Wyjście:

ajay manager account 45000 varun manager sales 50000 amit manager account 47000>

W powyższym przykładzie polecenie awk wypisuje całą linię pasującą do „managera”.

3. Podział linii na pola: Dla każdego rekordu, tj. linii, polecenie awk domyślnie dzieli rekord rozdzielony białymi znakami i zapisuje go w zmiennych $n. Jeśli linia ma 4 słowa, będzie przechowywana odpowiednio w $1, $2, $3 i $4. Ponadto $ 0 reprezentuje całą linię.

$ awk '{print $1,$4}' employee.txt>

Wyjście:

ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>

W powyższym przykładzie 1 USD i 4 USD reprezentują odpowiednio pola Nazwisko i Wynagrodzenie.

Wbudowane zmienne w Awk

Wbudowane zmienne Awk obejmują zmienne pól — 1 USD, 2 USD, 3 USD itd. (0 USD to cała linia) — które dzielą linię tekstu na pojedyncze słowa lub fragmenty zwane polami.

    NR: Polecenie NR utrzymuje aktualną liczbę rekordów wejściowych. Pamiętaj, że rekordy to zazwyczaj linie. Polecenie Awk wykonuje instrukcje wzorca/akcji raz dla każdego rekordu w pliku. NF: Polecenie NF zlicza liczbę pól w bieżącym rekordzie wejściowym. FS: Polecenie FS zawiera znak separatora pól, który służy do podziału pól w linii wejściowej. Wartość domyślna to białe znaki, co oznacza spacje i znaki tabulacji. FS można ponownie przypisać do innego znaku (zwykle w BEGIN), aby zmienić separator pól. RS: Polecenie RS przechowuje bieżący znak separatora rekordu. Ponieważ domyślnie wierszem wejściowym jest rekord wejściowy, domyślnym znakiem oddzielającym rekordy jest znak nowej linii. OFS: Polecenie OFS przechowuje separator pól wyjściowych, który oddziela pola, gdy Awk je drukuje. Wartość domyślna to puste miejsce. Ilekroć print ma kilka parametrów oddzielonych przecinkami, wyświetli wartość OFS pomiędzy każdym parametrem. ORS: Polecenie ORS przechowuje separator rekordów wyjściowych, który oddziela linie wyjściowe, gdy Awk je drukuje. Wartość domyślna to znak nowej linii. print automatycznie wyświetla zawartość ORS na końcu tego, co jest przeznaczone do wydrukowania.

Przykłady:

Użycie wbudowanych zmiennych NR (numer linii wyświetlacza)

$ awk '{print NR,$0}' employee.txt>

Wyjście:

1 ajay manager account 45000 2 sunil clerk account 25000 3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000 7 sunil peon sales 13000 8 satvik director purchase 80000>

W powyższym przykładzie polecenie awk z NR wypisuje wszystkie linie wraz z numerem linii.

Użycie wbudowanych zmiennych NF (wyświetl ostatnie pole)

$ awk '{print $1,$NF}' employee.txt>

Wyjście:

ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>

W powyższym przykładzie $1 reprezentuje imię i nazwisko, a $NF reprezentuje wynagrodzenie. Możemy uzyskać wynagrodzenie za pomocą $NF , gdzie $NF reprezentuje ostatnie pole.

Inne zastosowanie wbudowanych zmiennych NR (linia wyświetlacza od 3 do 6)

$ awk 'NR==3, NR==6 {print NR,$0}' employee.txt>

Wyjście:

3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>

Więcej przykładów

Dla podanego pliku tekstowego:

$cat>geeksforgeeks.txt A B C Tarun A12 1 Człowiek B6 2 Praveen M42 3>

1) Aby wydrukować pierwszy element wraz z numerem wiersza (NR) oddzielonym znakiem – z każdej linii w geeksforgeeks.txt:

$ awk '{print NR '- ' $1 }' geeksforgeeks.txt>
1 - A 2 - Tarun 3 – Manav 4 - Praveen>

2) Aby zwrócić drugą kolumnę/element z geeksforgeeks.txt:

Pytanie powinno brzmieć: – Aby zwrócić drugą kolumnę/element z geeksforgeeks.txt:

$ awk '{print $2}' geeksforgeeks.txt>
B A12 B6 M42>

3) Aby wydrukować dowolną niepustą linię, jeśli jest obecna

$ awk 'NF <0' geeksforgeeks.txt>

tutaj NF powinno wynosić 0 nie mniej niż i użytkownik musi również wydrukować numer linii:

poprawna odpowiedź: awk „NF == 0 {wydrukuj NR}” geeksforgeeks.txt

LUB

awk „NF <= 0 {wydrukuj NR}” geeksforgeeks.txt

0>

4) Aby znaleźć długość najdłuższej linii występującej w pliku:

$ awk '{ if (length($0)>max) max = długość (0 $) } KONIEC { drukuj max }' geeksforgeeks.txt>
13>

5) Aby policzyć linie w pliku:

$ awk 'END { print NR }' geeksforgeeks.txt>
3>

6) Drukowanie linii zawierających więcej niż 10 znaków:

$ awk 'length($0)>10' geeksforgeeks.txt>
Tarun A12 1 Praveen M42 3>

7) Aby znaleźć/sprawdzić dowolny ciąg w dowolnej kolumnie:

$ awk '{ if($3 == 'B6') print $0;}' geeksforgeeks.txt>

8) Aby wydrukować kwadraty pierwszych liczb od 1 do n, powiedzmy 6:

$ awk 'BEGIN { for(i=1;i<=6;i++) print 'square of', i, 'is',i*i; }'>
square of 1 is 1 square of 2 is 4 square of 3 is 9 square of 4 is 16 square of 5 is 25 square of 6 is 36>


)>max) max = długość (0 $) } KONIEC { drukuj max }' geeksforgeeks.txt>
13>

5) Aby policzyć linie w pliku:

$ awk 'END { print NR }' geeksforgeeks.txt>
3>

6) Drukowanie linii zawierających więcej niż 10 znaków:

$ awk 'length(

Awk to język skryptowy używany do manipulowania danymi i generowania raportów. Język programowania poleceń awk nie wymaga kompilacji i pozwala użytkownikowi używać zmiennych, funkcji numerycznych, funkcji łańcuchowych i operatorów logicznych.

Awk to narzędzie umożliwiające programiście pisanie małych, ale skutecznych programów w formie instrukcji definiujących wzorce tekstu, które mają być wyszukiwane w każdym wierszu dokumentu oraz akcję, jaka ma zostać podjęta w przypadku znalezienia dopasowania w obrębie linia. Awk jest najczęściej używany do skanowania i przetwarzania wzorców. Przeszukuje jeden lub więcej plików, aby sprawdzić, czy zawierają linie pasujące do określonych wzorców, a następnie wykonuje powiązane działania.

Awk jest skrótem od nazwisk twórców – Aho, Weinberger i Kernighan.

CO MOŻEMY ZROBIĆ Z AWK?

1. Operacje AWK:
(a) Skanuje plik linia po linii
(b) Dzieli każdą linię wejściową na pola
(c) Porównuje linię/pola wejściowe ze wzorcem
(d) Wykonuje akcje na dopasowanych liniach

2. Przydatne dla:
(a) Przekształć pliki danych
(b) Tworzenie sformatowanych raportów

3. Konstrukcje programistyczne:
(a) Sformatuj linie wyjściowe
(b) Operacje arytmetyczne i na łańcuchach
(c) Warunki i pętle

Składnia:

awk options 'selection _criteria {action }' input-file>plik-wyjściowy>

Opcje:

-f program-file : Reads the AWK program source from the file program-file, instead of from the first command line argument. -F fs : Use fs for the input field separator>

Przykładowe polecenia

Przykład:

Rozważ następujący plik tekstowy jako plik wejściowy dla wszystkich poniższych przypadków:

$cat>pracownik.txt>
ajay manager account 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik director purchase 80000>

1. Domyślne zachowanie Awk: Domyślnie Awk wypisuje każdą linię danych z określonego pliku.

$ awk '{print}' employee.txt>

Wyjście:

ajay manager account 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik director purchase 80000>

W powyższym przykładzie nie podano żadnego wzoru. Zatem działania mają zastosowanie do wszystkich linii. Akcja print bez argumentu domyślnie wypisuje całą linię, zatem bezbłędnie wypisuje wszystkie linie pliku.

2. Wydrukuj linie odpowiadające podanemu wzorowi.

$ awk '/manager/ {print}' employee.txt>

Wyjście:

ajay manager account 45000 varun manager sales 50000 amit manager account 47000>

W powyższym przykładzie polecenie awk wypisuje całą linię pasującą do „managera”.

3. Podział linii na pola: Dla każdego rekordu, tj. linii, polecenie awk domyślnie dzieli rekord rozdzielony białymi znakami i zapisuje go w zmiennych $n. Jeśli linia ma 4 słowa, będzie przechowywana odpowiednio w $1, $2, $3 i $4. Ponadto $ 0 reprezentuje całą linię.

$ awk '{print $1,$4}' employee.txt>

Wyjście:

ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>

W powyższym przykładzie 1 USD i 4 USD reprezentują odpowiednio pola Nazwisko i Wynagrodzenie.

Wbudowane zmienne w Awk

Wbudowane zmienne Awk obejmują zmienne pól — 1 USD, 2 USD, 3 USD itd. (0 USD to cała linia) — które dzielą linię tekstu na pojedyncze słowa lub fragmenty zwane polami.

    NR: Polecenie NR utrzymuje aktualną liczbę rekordów wejściowych. Pamiętaj, że rekordy to zazwyczaj linie. Polecenie Awk wykonuje instrukcje wzorca/akcji raz dla każdego rekordu w pliku. NF: Polecenie NF zlicza liczbę pól w bieżącym rekordzie wejściowym. FS: Polecenie FS zawiera znak separatora pól, który służy do podziału pól w linii wejściowej. Wartość domyślna to białe znaki, co oznacza spacje i znaki tabulacji. FS można ponownie przypisać do innego znaku (zwykle w BEGIN), aby zmienić separator pól. RS: Polecenie RS przechowuje bieżący znak separatora rekordu. Ponieważ domyślnie wierszem wejściowym jest rekord wejściowy, domyślnym znakiem oddzielającym rekordy jest znak nowej linii. OFS: Polecenie OFS przechowuje separator pól wyjściowych, który oddziela pola, gdy Awk je drukuje. Wartość domyślna to puste miejsce. Ilekroć print ma kilka parametrów oddzielonych przecinkami, wyświetli wartość OFS pomiędzy każdym parametrem. ORS: Polecenie ORS przechowuje separator rekordów wyjściowych, który oddziela linie wyjściowe, gdy Awk je drukuje. Wartość domyślna to znak nowej linii. print automatycznie wyświetla zawartość ORS na końcu tego, co jest przeznaczone do wydrukowania.

Przykłady:

Użycie wbudowanych zmiennych NR (numer linii wyświetlacza)

$ awk '{print NR,$0}' employee.txt>

Wyjście:

1 ajay manager account 45000 2 sunil clerk account 25000 3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000 7 sunil peon sales 13000 8 satvik director purchase 80000>

W powyższym przykładzie polecenie awk z NR wypisuje wszystkie linie wraz z numerem linii.

Użycie wbudowanych zmiennych NF (wyświetl ostatnie pole)

$ awk '{print $1,$NF}' employee.txt>

Wyjście:

ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>

W powyższym przykładzie $1 reprezentuje imię i nazwisko, a $NF reprezentuje wynagrodzenie. Możemy uzyskać wynagrodzenie za pomocą $NF , gdzie $NF reprezentuje ostatnie pole.

Inne zastosowanie wbudowanych zmiennych NR (linia wyświetlacza od 3 do 6)

$ awk 'NR==3, NR==6 {print NR,$0}' employee.txt>

Wyjście:

3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>

Więcej przykładów

Dla podanego pliku tekstowego:

$cat>geeksforgeeks.txt A B C Tarun A12 1 Człowiek B6 2 Praveen M42 3>

1) Aby wydrukować pierwszy element wraz z numerem wiersza (NR) oddzielonym znakiem – z każdej linii w geeksforgeeks.txt:

$ awk '{print NR '- ' $1 }' geeksforgeeks.txt>
1 - A 2 - Tarun 3 – Manav 4 - Praveen>

2) Aby zwrócić drugą kolumnę/element z geeksforgeeks.txt:

Pytanie powinno brzmieć: – Aby zwrócić drugą kolumnę/element z geeksforgeeks.txt:

$ awk '{print $2}' geeksforgeeks.txt>
B A12 B6 M42>

3) Aby wydrukować dowolną niepustą linię, jeśli jest obecna

$ awk 'NF <0' geeksforgeeks.txt>

tutaj NF powinno wynosić 0 nie mniej niż i użytkownik musi również wydrukować numer linii:

poprawna odpowiedź: awk „NF == 0 {wydrukuj NR}” geeksforgeeks.txt

LUB

awk „NF <= 0 {wydrukuj NR}” geeksforgeeks.txt

0>

4) Aby znaleźć długość najdłuższej linii występującej w pliku:

$ awk '{ if (length($0)>max) max = długość (0 $) } KONIEC { drukuj max }' geeksforgeeks.txt>
13>

5) Aby policzyć linie w pliku:

$ awk 'END { print NR }' geeksforgeeks.txt>
3>

6) Drukowanie linii zawierających więcej niż 10 znaków:

$ awk 'length($0)>10' geeksforgeeks.txt>
Tarun A12 1 Praveen M42 3>

7) Aby znaleźć/sprawdzić dowolny ciąg w dowolnej kolumnie:

$ awk '{ if($3 == 'B6') print $0;}' geeksforgeeks.txt>

8) Aby wydrukować kwadraty pierwszych liczb od 1 do n, powiedzmy 6:

$ awk 'BEGIN { for(i=1;i<=6;i++) print 'square of', i, 'is',i*i; }'>
square of 1 is 1 square of 2 is 4 square of 3 is 9 square of 4 is 16 square of 5 is 25 square of 6 is 36>


)>10' geeksforgeeks.txt>
Tarun A12 1 Praveen M42 3>

7) Aby znaleźć/sprawdzić dowolny ciąg w dowolnej kolumnie:

$ awk '{ if( == 'B6') print 

Awk to język skryptowy używany do manipulowania danymi i generowania raportów. Język programowania poleceń awk nie wymaga kompilacji i pozwala użytkownikowi używać zmiennych, funkcji numerycznych, funkcji łańcuchowych i operatorów logicznych.

Awk to narzędzie umożliwiające programiście pisanie małych, ale skutecznych programów w formie instrukcji definiujących wzorce tekstu, które mają być wyszukiwane w każdym wierszu dokumentu oraz akcję, jaka ma zostać podjęta w przypadku znalezienia dopasowania w obrębie linia. Awk jest najczęściej używany do skanowania i przetwarzania wzorców. Przeszukuje jeden lub więcej plików, aby sprawdzić, czy zawierają linie pasujące do określonych wzorców, a następnie wykonuje powiązane działania.

Awk jest skrótem od nazwisk twórców – Aho, Weinberger i Kernighan.

CO MOŻEMY ZROBIĆ Z AWK?

1. Operacje AWK:
(a) Skanuje plik linia po linii
(b) Dzieli każdą linię wejściową na pola
(c) Porównuje linię/pola wejściowe ze wzorcem
(d) Wykonuje akcje na dopasowanych liniach

2. Przydatne dla:
(a) Przekształć pliki danych
(b) Tworzenie sformatowanych raportów

3. Konstrukcje programistyczne:
(a) Sformatuj linie wyjściowe
(b) Operacje arytmetyczne i na łańcuchach
(c) Warunki i pętle

Składnia:

awk options 'selection _criteria {action }' input-file>plik-wyjściowy>

Opcje:

-f program-file : Reads the AWK program source from the file program-file, instead of from the first command line argument. -F fs : Use fs for the input field separator>

Przykładowe polecenia

Przykład:

Rozważ następujący plik tekstowy jako plik wejściowy dla wszystkich poniższych przypadków:

$cat>pracownik.txt>
ajay manager account 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik director purchase 80000>

1. Domyślne zachowanie Awk: Domyślnie Awk wypisuje każdą linię danych z określonego pliku.

$ awk '{print}' employee.txt>

Wyjście:

ajay manager account 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik director purchase 80000>

W powyższym przykładzie nie podano żadnego wzoru. Zatem działania mają zastosowanie do wszystkich linii. Akcja print bez argumentu domyślnie wypisuje całą linię, zatem bezbłędnie wypisuje wszystkie linie pliku.

2. Wydrukuj linie odpowiadające podanemu wzorowi.

$ awk '/manager/ {print}' employee.txt>

Wyjście:

ajay manager account 45000 varun manager sales 50000 amit manager account 47000>

W powyższym przykładzie polecenie awk wypisuje całą linię pasującą do „managera”.

3. Podział linii na pola: Dla każdego rekordu, tj. linii, polecenie awk domyślnie dzieli rekord rozdzielony białymi znakami i zapisuje go w zmiennych $n. Jeśli linia ma 4 słowa, będzie przechowywana odpowiednio w $1, $2, $3 i $4. Ponadto $ 0 reprezentuje całą linię.

$ awk '{print $1,$4}' employee.txt>

Wyjście:

ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>

W powyższym przykładzie 1 USD i 4 USD reprezentują odpowiednio pola Nazwisko i Wynagrodzenie.

Wbudowane zmienne w Awk

Wbudowane zmienne Awk obejmują zmienne pól — 1 USD, 2 USD, 3 USD itd. (0 USD to cała linia) — które dzielą linię tekstu na pojedyncze słowa lub fragmenty zwane polami.

    NR: Polecenie NR utrzymuje aktualną liczbę rekordów wejściowych. Pamiętaj, że rekordy to zazwyczaj linie. Polecenie Awk wykonuje instrukcje wzorca/akcji raz dla każdego rekordu w pliku. NF: Polecenie NF zlicza liczbę pól w bieżącym rekordzie wejściowym. FS: Polecenie FS zawiera znak separatora pól, który służy do podziału pól w linii wejściowej. Wartość domyślna to białe znaki, co oznacza spacje i znaki tabulacji. FS można ponownie przypisać do innego znaku (zwykle w BEGIN), aby zmienić separator pól. RS: Polecenie RS przechowuje bieżący znak separatora rekordu. Ponieważ domyślnie wierszem wejściowym jest rekord wejściowy, domyślnym znakiem oddzielającym rekordy jest znak nowej linii. OFS: Polecenie OFS przechowuje separator pól wyjściowych, który oddziela pola, gdy Awk je drukuje. Wartość domyślna to puste miejsce. Ilekroć print ma kilka parametrów oddzielonych przecinkami, wyświetli wartość OFS pomiędzy każdym parametrem. ORS: Polecenie ORS przechowuje separator rekordów wyjściowych, który oddziela linie wyjściowe, gdy Awk je drukuje. Wartość domyślna to znak nowej linii. print automatycznie wyświetla zawartość ORS na końcu tego, co jest przeznaczone do wydrukowania.

Przykłady:

Użycie wbudowanych zmiennych NR (numer linii wyświetlacza)

$ awk '{print NR,$0}' employee.txt>

Wyjście:

1 ajay manager account 45000 2 sunil clerk account 25000 3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000 7 sunil peon sales 13000 8 satvik director purchase 80000>

W powyższym przykładzie polecenie awk z NR wypisuje wszystkie linie wraz z numerem linii.

Użycie wbudowanych zmiennych NF (wyświetl ostatnie pole)

$ awk '{print $1,$NF}' employee.txt>

Wyjście:

ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>

W powyższym przykładzie $1 reprezentuje imię i nazwisko, a $NF reprezentuje wynagrodzenie. Możemy uzyskać wynagrodzenie za pomocą $NF , gdzie $NF reprezentuje ostatnie pole.

Inne zastosowanie wbudowanych zmiennych NR (linia wyświetlacza od 3 do 6)

$ awk 'NR==3, NR==6 {print NR,$0}' employee.txt>

Wyjście:

3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>

Więcej przykładów

Dla podanego pliku tekstowego:

$cat>geeksforgeeks.txt A B C Tarun A12 1 Człowiek B6 2 Praveen M42 3>

1) Aby wydrukować pierwszy element wraz z numerem wiersza (NR) oddzielonym znakiem – z każdej linii w geeksforgeeks.txt:

$ awk '{print NR '- ' $1 }' geeksforgeeks.txt>
1 - A 2 - Tarun 3 – Manav 4 - Praveen>

2) Aby zwrócić drugą kolumnę/element z geeksforgeeks.txt:

Pytanie powinno brzmieć: – Aby zwrócić drugą kolumnę/element z geeksforgeeks.txt:

$ awk '{print $2}' geeksforgeeks.txt>
B A12 B6 M42>

3) Aby wydrukować dowolną niepustą linię, jeśli jest obecna

$ awk 'NF <0' geeksforgeeks.txt>

tutaj NF powinno wynosić 0 nie mniej niż i użytkownik musi również wydrukować numer linii:

poprawna odpowiedź: awk „NF == 0 {wydrukuj NR}” geeksforgeeks.txt

LUB

awk „NF <= 0 {wydrukuj NR}” geeksforgeeks.txt

0>

4) Aby znaleźć długość najdłuższej linii występującej w pliku:

$ awk '{ if (length($0)>max) max = długość (0 $) } KONIEC { drukuj max }' geeksforgeeks.txt>
13>

5) Aby policzyć linie w pliku:

$ awk 'END { print NR }' geeksforgeeks.txt>
3>

6) Drukowanie linii zawierających więcej niż 10 znaków:

$ awk 'length($0)>10' geeksforgeeks.txt>
Tarun A12 1 Praveen M42 3>

7) Aby znaleźć/sprawdzić dowolny ciąg w dowolnej kolumnie:

$ awk '{ if($3 == 'B6') print $0;}' geeksforgeeks.txt>

8) Aby wydrukować kwadraty pierwszych liczb od 1 do n, powiedzmy 6:

$ awk 'BEGIN { for(i=1;i<=6;i++) print 'square of', i, 'is',i*i; }'>
square of 1 is 1 square of 2 is 4 square of 3 is 9 square of 4 is 16 square of 5 is 25 square of 6 is 36>


;}' geeksforgeeks.txt>

8) Aby wydrukować kwadraty pierwszych liczb od 1 do n, powiedzmy 6:

$ awk 'BEGIN { for(i=1;i<=6;i++) print 'square of', i, 'is',i*i; }'>
square of 1 is 1 square of 2 is 4 square of 3 is 9 square of 4 is 16 square of 5 is 25 square of 6 is 36>