Cum se imprimă o gamă de coloane utilizând comanda `awk`

How Print Range Columns Using Awk Command



Comanda `awk` este una dintre multele comenzi care pot fi utilizate pentru a imprima o serie de coloane din date tabulare în Linux. Comanda `awk` poate fi utilizată direct de la terminal prin executarea fișierului script` awk`. În acest tutorial, vă vom arăta cum să imprimați o gamă de coloane din date tabulare.

Exemplul 1: Imprimați o gamă de coloane dintr-o ieșire de comandă

Următoarea comandă va imprima a doua, a treia și a patra coloană din ieșirea comenzii, ‘Ls -l ‘. Aici, numerele coloanelor sunt enunțate în mod explicit, dar o comandă mai eficientă pentru imprimarea aceluiași interval de coloane este prezentată în exemplul următor.







$eu sunt -la | awk „{print $ 2, 3 $, 4 $}”

Următoarea ieșire este produsă de comanda de mai sus.





Exemplul 2: Imprimați gama de coloane dintr-un fișier utilizând un pentru buclă

Pentru a urma împreună cu acest exemplu și celelalte exemple din acest tutorial, creați un fișier text numit marks.txt cu următorul conținut :





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

Următoarea comandă `awk` va imprima primele trei coloane de marks.txt. The pentru bucla este utilizată pentru a imprima valorile coloanei, iar bucla include trei pași. The NF variabila indică numărul total de câmpuri sau coloane ale fișierului.

$pisicămarks.txt
$awk '{pentru (i = 1; i<=NF-1;i++) printf $i' '; print ''}'marks.txt

Următoarea ieșire va fi produsă executând comanda. Rezultatul arată elevul ID-uri și semnele pentru CSE203 și CSE102 .



Exemplul 3: Imprimați gama de coloane definind variabilele de început și de sfârșit

Următoarea comandă `awk` va imprima primele trei coloane din ieșirea comenzii‘ ls -l ’inițializând pornire și final variabile. Aici, valoarea pornire variabila este 1, iar valoarea final variabila este 3. Aceste variabile sunt repetate într-o buclă for pentru a imprima valorile coloanei.

$eu sunt -la | awk 'BEGIN {first = 1; ultimul = 3}
{pentru (i = primul; i

Următoarea ieșire va apărea după executarea comenzii. Ieșirea arată primele trei valori ale coloanei de ieșire, „ls -l”.

Exemplul 4: Imprimați o gamă de coloane dintr-un fișier cu formatare

Următoarea comandă `awk` va imprima primele trei coloane ale marks.txt folosind printf și separatorul de câmp de ieșire ( OFS ). Aici, bucla for include trei pași, iar trei coloane vor fi tipărite în ordine din fișier. OFS este folosit aici pentru a adăuga spațiu între coloane. Când valoarea contorului buclei (i) este egală cu final variabilă, atunci se generează o linie nouă ( n).

$pisicămarks.txt
$awk -v start=1 -v Sfârșit=3 '{for (i = start; i<=end;i++) printf('%s%s',
$ i, (i == sfârșit)? ' n': OFS)} '
marks.txt

Următoarea ieșire va fi generată după executarea comenzilor de mai sus.

Exemplul 5: Imprimați gama de coloane dintr-un fișier utilizând o instrucțiune condițională

Următoarea comandă `awk` va imprima prima și ultima coloane dintr-un fișier utilizând o buclă for și o instrucțiune if. Aici, bucla for include patru pași. The pornire și final variabilele sunt utilizate în script pentru a omite a doua și a treia coloană din fișier utilizând condiția if. Variabila OFS este utilizată pentru a adăuga spațiu între coloane, iar variabila ORS este utilizată pentru a adăuga o linie nouă ( n) după imprimarea ultimei coloane.

$pisicămarks.txt
$awk -v start=2 -v Sfârșit=3 '{pentru (i = 1; i<=NF;i++)
if (i> = start && i<=end) continue;
else printf ('% s% s', $ i, (i! = NF)? OFS: ORS)} '
marks.txt

Următoarea ieșire va apărea după executarea comenzilor de mai sus. Ieșirea arată prima și ultima coloane din marks.txt.

Exemplul 6: Imprimați gama de coloane dintr-un fișier utilizând variabila NF

Următoarea comandă `awk` va imprima prima și ultima coloane din fișier utilizând o variabilă NF. Nu se utilizează bucle sau instrucțiuni condiționale pentru a imprima valorile coloanei. NF indică numărul de câmpuri. Există patru coloane în marks.txt. $ (NF-3) definește prima coloană, iar $ NF indică ultima coloană.

$pisicămarks.txt
$awk '{print $ (NF-3)' '$ NF}'marks.txt

Următoarea ieșire este produsă prin executarea comenzilor de mai sus. Ieșirea arată prima și ultima coloane din marks.txt.

Exemplul 7: Imprimați gama de coloane dintr-un fișier folosind substr () și index ()

Funcția index () returnează o poziție dacă a doua valoare de argument există în prima valoare de argument. Funcția substr () poate lua trei argumente. Primul argument este o valoare șir, al doilea argument este poziția de pornire, iar al treilea argument este lungimea. Al treilea argument al substr () este omis în următoarea comandă. Deoarece coloana începe de la $ 1 în comanda `awk`, funcția index () va returna $ 3, iar comanda va imprima de la $ 3 la $ 4.

$pisicămarks.txt
$awk „{print substr ($ 0, index ($ 0, $ 3))}”marks.txt

Următoarea ieșire va fi produsă executând comenzile de mai sus.

Exemplul 8: Imprimați secvențial o gamă de coloane dintr-un fișier utilizând printf

Următoarea comandă `awk` va imprima prima, a doua și a treia coloană marks.txt setând spațiu suficient pentru 10 caractere.

$pisicămarks.txt
$awk '// {printf'% 10s% 10s% 10s n ', $ 1, $ 3, $ 2}'marks.txt

Următoarea ieșire va fi produsă executând comenzile de mai sus.

Concluzie

Există diferite moduri de a imprima gama de coloane din ieșirea comenzii sau dintr-un fișier. Acest tutorial arată cum comanda `awk` poate ajuta utilizatorii Linux să imprime conținut din date tabulare.