Veergude vahemiku printimine käsuga 'awk'

How Print Range Columns Using Awk Command

Käsk 'awk' on üks paljudest käskudest, mida saab kasutada Linuxi tabeliandmete hulga veergude printimiseks. Käsu 'awk' saab kasutada otse terminalist, käivitades skriptifaili 'awk'. Selles õpetuses näitame teile, kuidas tabeliandmetest tulpade vahemikku printida.

Näide 1: käskude väljundist tulpade vahemiku printimine

Järgmine käsk prindib käsu väljundist teise, kolmanda ja neljanda veeru, ‘Ls -l ‘. Siin on veergude numbrid selgesõnaliselt välja toodud, kuid tõhusam käsk sama veergude vahemiku printimiseks on näidatud järgmises näites.



$ls -neid | awk „{print $ 2, $ 3, $ 4}”

Järgmine väljund saadakse ülaltoodud käsuga.





Näide 2: Printige failist veergude vahemik, kasutades a eest silmus

Selle näite ja selle õpetuse teiste näidete järgimiseks looge tekstifail nimega marks.txt järgmise sisuga :

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

Järgmine käsk 'awk' prindib kolm esimest märgi.txt veergu. The eest loop kasutatakse veeruväärtuste printimiseks ja silmus sisaldab kolme sammu. The NF muutuja näitab faili väljade või veergude koguarvu.

$kassmarks.txt
$awk „{jaoks (i = 1; i<=NF-1;i++) printf $i' '; print ''}'marks.txt

Käsk käivitab järgmise väljundi. Väljund näitab õpilast ID -d ja märgid CSE203 ja CSE102 .



Näide 3: Printige veergude vahemik, määratledes alg- ja lõppmuutujad

Järgmine käsk 'awk' prindib kolm esimest veergu käsu väljundist 'ls -l', lähtestades alustades ja lõpp muutujad. Siin on väärtus alustades muutuja on 1 ja väärtus lõpp muutuja on 3. Need muutujad on veeruväärtuste printimiseks ahelas kordatud.

$ls -neid | awk 'BEGIN {esimene = 1; viimane = 3}
{jaoks (i = esimene; i

Pärast käsu käivitamist ilmub järgmine väljund. Väljund näitab väljundi kolme esimest veeruväärtust 'ls -l'.

Näide 4: vormindatud failist tulpade vahemiku printimine

Järgmine käsk 'awk' prindib kolm esimest veergu marks.txt kasutades printf ja väljundvälja eraldaja ( OFS ). Siin sisaldab for -tsükkel kolme sammu ja failist trükitakse järjestikku kolm veergu. OFS kasutatakse siin veergude vahele tühiku lisamiseks. Kui silmuse (i) loendurväärtus on võrdne lõpp muutuja, siis genereeritakse uus rida ( n).

$kassmarks.txt
$awk -v alustada=1 -v lõpp=3 '{jaoks (i = algus; i<=end;i++) printf('%s%s',
$ i, (i == lõpp)? ' n': OFS)} '
marks.txt

Pärast ülaltoodud käskude käivitamist genereeritakse järgmine väljund.

Näide 5: Printige tingimuslause abil failist veergude vahemik

Järgmine käsk 'awk' prindib failist esimese ja viimase veeru, kasutades lauset for ja lauset if. Siin sisaldab for -tsükkel nelja sammu. The alustades ja lõpp muutujaid kasutatakse skriptis teise ja kolmanda veeru jätmiseks failist, kasutades tingimust if. Muutujat OFS kasutatakse veergude vahele ruumi lisamiseks ja ORS muutujat uue rea ( n) lisamiseks pärast viimase veeru printimist.

$kassmarks.txt
$awk -v alustada=2 -v lõpp=3 „{jaoks (i = 1; i<=NF;i++)
kui (i> = alusta && i<=end) continue;
else printf ('%s%s', $ i, (i! = NF)? OFS: ORS)} '
marks.txt

Pärast ülaltoodud käskude käivitamist kuvatakse järgmine väljund. Väljund näitab kaubamärgi.txt esimest ja viimast veergu.

Näide 6: Printige veergude vahemik failist, kasutades muutujat NF

Järgmine käsk 'awk' prindib faili esimese ja viimase veeru, kasutades NF muutujat. Veeru väärtuste printimiseks ei kasutata silmuseid ega tingimuslauseid. NF näitab väljade arvu. Mark.txt -s on neli veergu. $ (NF-3) määratleb esimese veeru ja $ NF viimase veeru.

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

Järgmine väljund saadakse ülaltoodud käskude käivitamisega. Väljund näitab kaubamärgi.txt esimest ja viimast veergu.

Näide 7: Printige failist veergude vahemik, kasutades substr () ja index ()

Funktsioon indeks () tagastab positsiooni, kui esimese argumendi väärtuses on teine ​​argumendi väärtus. Funktsioon substr () võib sisaldada kolme argumenti. Esimene argument on stringi väärtus, teine ​​argument on lähtepositsioon ja kolmas argument on pikkus. Substr () kolmas argument jäetakse järgmises käsus välja. Kuna veerg algab käsust „awk“ alates $ 1, tagastab funktsioon index () $ 3 ja käsk prinditakse $ 3 kuni $ 4.

$kassmarks.txt
$awk '{print substr ($ 0, index ($ 0, $ 3))}'marks.txt

Järgmine väljund toodetakse ülaltoodud käskude käivitamisega.

Näide 8: Printige järjestikku failist veergude vahemik printf

Järgmine käsk 'awk' prindib kaubamärgi.txt esimese, teise ja kolmanda veeru, määrates piisavalt ruumi 10 tähemärgi jaoks.

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

Järgmine väljund toodetakse ülaltoodud käskude käivitamisega.

Järeldus

Veergude vahemiku printimiseks käsuväljundist või failist on erinevaid viise. See õpetus näitab, kuidas käsk 'awk' aitab Linuxi kasutajatel tabeliandmetest sisu printida.