Oszlopok nyomtatása az 'awk' paranccsal

How Print Range Columns Using Awk Command



Az 'awk' parancs egyike azoknak a sok parancsnak, amelyek segítségével oszlopok nyomtathatók a Linux táblázatos adataiból. Az 'awk' parancs közvetlenül a terminálról használható az 'awk' parancsfájl végrehajtásával. Ebben az oktatóanyagban megmutatjuk, hogyan lehet egy oszloptartományt nyomtatni a táblázatos adatokból.

1. példa: Nyomtasson ki egy oszloptartományt a parancs kimenetéből

A következő parancs kinyomtatja a második, harmadik és negyedik oszlopot a parancs kimenetéből, ‘Ls -l ’. Itt az oszlopszámokat kifejezetten megadjuk, de a következő példában egy hatékonyabb parancs ugyanazon oszloptartomány nyomtatására.







$ls -az | awk '{print $ 2, $ 3, $ 4}'

Az alábbi kimenetet a fenti parancs adja.





2. példa: Nyomtassa ki az oszlopok tartományát a fájlból a számára hurok

Ennek a példának és az oktatóanyag többi példájának követéséhez hozzon létre egy szöveges fájlt marks.txt a következő tartalommal :





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

A következő `awk` parancs kinyomtatja a marks.txt első három oszlopát. Az számára ciklus az oszlopértékek nyomtatására szolgál, és a ciklus három lépést tartalmaz. Az NF változó a fájl mezők vagy oszlopok teljes számát jelzi.

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

A következő kimenet a parancs futtatásával jön létre. A kimenet a diákot mutatja Azonosítók és a jelöléseket CSE203 és CSE102 .



3. példa: Nyomtassa ki az oszlopok tartományát a kezdő és befejező változók meghatározásával

A következő 'awk' parancs az 'ls -l' parancskimenetből kinyomtatja az első három oszlopot induló és befejező változók. Itt az értéke induló változó 1, és az értéke befejező változó 3. Ezeket a változókat iteráljuk egy for ciklusban az oszlopértékek nyomtatásához.

$ls -az | awk 'BEGIN {first = 1; utolsó = 3}
{mert (i = először; i

A parancs futtatása után a következő kimenet jelenik meg. A kimenet a kimenet első három oszlopértékét mutatja, „ls -l”.

Példa 4: Oszloptartomány nyomtatása formázott fájlból

A következő `awk` parancs kinyomtatja az első három oszlopát marks.txt segítségével printf és a kimeneti mező elválasztója ( OFS ). Itt a for ciklus három lépést tartalmaz, és három oszlop kerül sorrendben nyomtatásra a fájlból. OFS itt az oszlopok közötti szóköz hozzáadására szolgál. Amikor a ciklus (i) számlálóértéke megegyezik a befejező változó, akkor új sor ( n) jön létre.

$macskamarks.txt
$awk -v Rajt=1 -v vége=3 '{for (i = kezdet; i<=end;i++) printf('%s%s',
$ i, (i == vége)? ' n': OFS)} '
marks.txt

A fenti parancsok futtatása után a következő kimenet jön létre.

5. példa: Nyomtassa ki az oszlopok tartományát egy fájlból egy feltételes utasítás használatával

A következő `awk` parancs a for ciklus és az if utasítás használatával kinyomtatja a fájl első és utolsó oszlopát. Itt a for ciklus négy lépést tartalmaz. Az induló és befejező A változók a parancsfájlban az if feltétel használatával kihagyják a fájl második és harmadik oszlopát. Az OFS változót az oszlopok közötti szóközök hozzáadására, az ORS változót pedig az új oszlop ( n) hozzáadására használják az utolsó oszlop nyomtatása után.

$macskamarks.txt
$awk -v Rajt=2 -v vége=3 '{mert (i = 1; i<=NF;i++)
if (i> = indítás && i<=end) continue;
else printf ('%s%s', $ i, (i! = NF)? OFS: ORS)} '
marks.txt

A fenti parancsok futtatása után a következő kimenet jelenik meg. A kimenet a marks.txt első és utolsó oszlopát mutatja.

6. példa: Nyomtassa ki az oszlopok tartományát egy fájlból az NF változó használatával

A következő `awk` parancs NF változó használatával kinyomtatja a fájl első és utolsó oszlopát. Az oszlopértékek nyomtatásához nem használnak ciklusokat vagy feltételes utasításokat. Az NF jelzi a mezők számát. A marks.txt fájlban négy oszlop található. A $ (NF-3) határozza meg az első oszlopot, a $ NF pedig az utolsó oszlopot.

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

A következő kimenet a fenti parancsok futtatásával állítható elő. A kimenet a marks.txt első és utolsó oszlopát mutatja.

7. példa: Nyomtassa ki az oszlopok tartományát egy fájlból az substr () és az index () használatával

Az index () függvény egy pozíciót ad vissza, ha a második argumentum értéke létezik az első argumentumértékben. Az substr () függvény három argumentumot tartalmazhat. Az első argumentum egy karakterlánc értéke, a második argumentum a kiindulási pozíció, a harmadik argumentum pedig a hossz. A substr () harmadik argumentuma kimarad a következő parancsból. Mivel az oszlop 1 dollárról indul az `awk` parancsban, az index () függvény 3 dollárt ad vissza, és a parancs 3 dollárról 4 dollárra nyomtat.

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

A következő kimenet a fenti parancsok futtatásával jön létre.

8. példa: Nyomtasson ki egy sor oszlopot egy fájlból a printf használatával

A következő `awk` parancs kinyomtatja a marks.txt első, második és harmadik oszlopát úgy, hogy 10 karakterre elegendő helyet állít be.

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

A következő kimenet a fenti parancsok futtatásával jön létre.

Következtetés

Az oszlopok tartományának nyomtatása a parancs kimenetéből vagy fájlból többféleképpen is lehetséges. Ez az oktatóanyag bemutatja, hogy az `awk` parancs hogyan segíthet a Linux felhasználóknak a tartalom nyomtatásában táblázatos adatokból.