Jak wydrukować zakres kolumn za pomocą polecenia `awk`

How Print Range Columns Using Awk Command



Polecenie `awk` jest jednym z wielu poleceń, których można użyć do wypisania zakresu kolumn z danych tabelarycznych w Linuksie. Polecenie `awk` może być użyte bezpośrednio z terminala poprzez wykonanie pliku skryptowego `awk`. W tym samouczku pokażemy, jak wydrukować zakres kolumn z danych tabelarycznych.

Przykład 1: Wydrukuj zakres kolumn z wyniku polecenia

Następujące polecenie wydrukuje drugą, trzecią i czwartą kolumnę z danych wyjściowych polecenia, „Ls-l „. Tutaj numery kolumn są podane wprost, ale w następnym przykładzie pokazano bardziej wydajne polecenie drukowania tego samego zakresu kolumn.







$ls -ten | awk '{ wydrukuj 2 USD, 3 USD, 4 USD }'

Poniższe dane wyjściowe są generowane przez powyższe polecenie.





Przykład 2: Wydrukuj zakres kolumn z pliku za pomocą a dla pętla

Aby podążać za tym przykładem i innymi przykładami w tym samouczku, utwórz plik tekstowy o nazwie mark.txt z następującą treścią :





ID CSE203 CSE102 CSE202
1109 78 87 79
1167 67 81 70
1190 56 61 69
1156 89 55 78
199 54 66 58

Następujące polecenie `awk` wypisze pierwsze trzy kolumny pliku marks.txt. ten dla pętla służy do drukowania wartości kolumn, a pętla obejmuje trzy kroki. ten NF zmienna wskazuje całkowitą liczbę pól lub kolumn w pliku.

$Kotmark.txt
$awk '{dla(i=1;i<=NF-1;i++) printf $i' '; print ''}'mark.txt

Następujące dane wyjściowe zostaną wygenerowane przez uruchomienie polecenia. Dane wyjściowe pokazują uczniowi identyfikatory i znaki dla CSE203 oraz CSE102 .



Przykład 3: Wydrukuj zakres kolumn, definiując zmienne początkowe i końcowe

Następujące polecenie `awk` wypisze pierwsze trzy kolumny z wyjścia polecenia „ls -l” przez inicjalizację startowy oraz kończący się zmienne. Tutaj wartość startowy zmienna wynosi 1, a wartość kończący się zmienna to 3. Te zmienne są powtarzane w pętli for, aby wydrukować wartości kolumn.

$ls -ten | awk ' POCZĄTEK { pierwszy = 1; ostatni = 3 }
{ dla (i = pierwszy; i

Po uruchomieniu polecenia pojawią się następujące dane wyjściowe. Dane wyjściowe pokazują pierwsze trzy wartości kolumn wyniku, „ls -l”.

Przykład 4: Wydrukuj zakres kolumn z pliku z formatowaniem

Następujące polecenie `awk` wypisze pierwsze trzy kolumny z mark.txt za pomocą printf i separator pól wyjściowych ( OFS ). W tym przypadku pętla for obejmuje trzy kroki, a trzy kolumny zostaną kolejno wydrukowane z pliku. OFS służy tutaj do dodania odstępu między kolumnami. Gdy wartość licznika pętli (i) jest równa kończący się zmienna, to generowany jest znak nowej linii ( ).

$Kotmark.txt
$awk -v początek=1 -v kończyć się=3 '{ dla (i=początek; i<=end;i++) printf('%s%s',
$i,(i==koniec) ? ' ' : OFS) }'
mark.txt

Poniższe dane wyjściowe zostaną wygenerowane po uruchomieniu powyższych poleceń.

Przykład 5: Wydrukuj zakres kolumn z pliku za pomocą instrukcji warunkowej

Następujące polecenie `awk` wypisze pierwszą i ostatnią kolumnę z pliku przy użyciu pętli for i instrukcji if. Tutaj pętla for zawiera cztery kroki. ten startowy oraz kończący się zmienne są używane w skrypcie do pominięcia drugiej i trzeciej kolumny z pliku przy użyciu warunku if. Zmienna OFS służy do dodawania spacji między kolumnami, a zmienna ORS służy do dodawania nowej linii ( ) po wydrukowaniu ostatniej kolumny.

$Kotmark.txt
$awk -v początek=2 -v kończyć się=3 '{ dla (i=1; i<=NF;i++)
if( i>=start && i<=end) continue;
else printf('%s%s', $i,(i!=NF) ? OFS :ORS) }'
mark.txt

Poniższe dane wyjściowe pojawią się po uruchomieniu powyższych poleceń. Dane wyjściowe pokazują pierwszą i ostatnią kolumnę pliku marks.txt.

Przykład 6: Wydrukuj zakres kolumn z pliku za pomocą zmiennej NF

Następujące polecenie `awk` wypisze pierwszą i ostatnią kolumnę z pliku przy użyciu zmiennej NF. Do drukowania wartości kolumn nie są używane żadne pętle ani instrukcje warunkowe. NF wskazuje liczbę pól. W marks.txt są cztery kolumny. $(NF-3) definiuje pierwszą kolumnę, a $NF oznacza ostatnią kolumnę.

$Kotmark.txt
$awk '{print $(NF-3)' '$NF}'mark.txt

Poniższe dane wyjściowe są generowane przez uruchomienie powyższych poleceń. Dane wyjściowe pokazują pierwszą i ostatnią kolumnę pliku marks.txt.

Przykład 7: Wydrukuj zakres kolumn z pliku za pomocą funkcji substr() i index()

Funkcja index() zwraca pozycję, jeśli wartość drugiego argumentu istnieje w wartości pierwszego argumentu. Funkcja substr() może przyjmować trzy argumenty. Pierwszy argument to wartość ciągu, drugi to pozycja początkowa, a trzeci to długość. W poniższym poleceniu pominięto trzeci argument funkcji substr(). Ponieważ kolumna zaczyna się od $1 w poleceniu `awk`, funkcja index() zwróci $3, a polecenie wydrukuje od $3 do $4.

$Kotmark.txt
$awk '{print substr($0,index($0,$3))}'mark.txt

Poniższe dane wyjściowe zostaną wygenerowane przez uruchomienie powyższych poleceń.

Przykład 8: Sekwencyjnie wypisuj zakres kolumn z pliku za pomocą printf

Następujące polecenie `awk` wypisze pierwszą, drugą i trzecią kolumnę pliku marks.txt przez ustawienie wystarczającej ilości miejsca na 10 znaków.

$Kotmark.txt
$awk '//{printf '%10s %10s %10s ',$1,$3,$2 }'mark.txt

Poniższe dane wyjściowe zostaną wygenerowane przez uruchomienie powyższych poleceń.

Wniosek

Istnieją różne sposoby drukowania zakresu kolumn z danych wyjściowych polecenia lub pliku. Ten samouczek pokazuje, jak polecenie `awk` może pomóc użytkownikom Linuksa w drukowaniu treści z danych tabelarycznych.