Com ometre la primera línia d'un fitxer amb `awk`

How Skip First Line File Using Awk



Hi ha diversos usos de l'ordre `awk` a Linux. Per exemple, es pot utilitzar per imprimir el contingut d'un fitxer de text. La primera línia de molts fitxers de text conté l’encapçalament del fitxer i, de vegades, s’ha d’ometre la primera línia quan s’imprimeix el contingut del fitxer. En aquest tutorial, us mostrarem com realitzar aquesta tasca mitjançant l'ordre `awk`.

Creeu un fitxer de text

Per seguir aquest tutorial, creeu un fitxer de text delimitat per pestanyes booklist.txt amb el contingut següent. Aquest fitxer conté una llista de llibres amb els seus autors corresponents. En aquest tutorial, us mostrarem com imprimir diferents parts d’aquest fitxer després d’ometre la primera línia.







Ciberseguretat amb Paul Troncone i Carl Albing

Línia d’ordres Kung Fu Jason Cannon

Línia d’ordres Linux Travis Booth

Bash en passos senzills Mike McGrath

Unix en passos senzills Mike McGrath

Exemple 1: Omet la primera línia d'un fitxer mitjançant NR i l'operador '>'

La variable NR indica el nombre de registres d’un fitxer. L'ordre següent 'awk' utilitza la variable NR per saltar la primera línia d'un fitxer. El valor de NR és 1 per a la primera línia. L'ordre següent imprimirà línies per a les quals el valor NR és superior a 1.



$gatbooklist.txt

$awk '(NO> 1)'booklist.txt

La següent sortida es produirà després d'executar les ordres anteriors. La sortida inclou totes les línies diferents de la primera línia del fitxer.







Exemple 2: ometeu la primera línia mitjançant NR i l’operador ‘! =’

L'ordre següent 'awk' és similar a l'exemple anterior. Tanmateix, aquí s’utilitza l’operador de comparació ‘! =’ En lloc de ‘>’.

$gatbooklist.txt

$awk 'NR! = 1'booklist.txt

La següent sortida es produirà després d'executar les ordres anteriors. La sortida mostra totes les línies diferents de la primera línia del fitxer.



Exemple 3: Omet la primera línia d'un fitxer mitjançant una sentència condicional

L'ordre següent 'awk' imprimirà les línies del fitxer si la sentència if és certa. Aquí, la sentència if només serà certa quan el valor NR no és igual a 1.

$gatbooklist.txt

$awk '{if (NR! = 1) {print}}'booklist.txt

La següent sortida es produirà després d'executar les ordres anteriors. La sortida inclou totes les línies excepte la primera línia del fitxer.

Exemple 4: imprimiu els noms del llibre des del fitxer, però salteu la primera línia

En aquest exemple s'utilitzen dues ordres 'awk' per imprimir tots els noms dels llibres, excepte el primer. L'ordre `awk` llegirà la primera columna del fitxer basada en el separador de camps ( t) i enviarà la sortida al segon ordre` awk`. La segona ordre 'awk' imprimirà la sortida desitjada.

$gatbooklist.txt

$awk -F ' t' '{print $ 1}'booklist.txt| awk 'NR! = 1 print}'

La següent sortida es produirà després d'executar les ordres anteriors. La sortida mostra tots els noms dels llibres, excepte el del primer llibre.

Exemple 5: formatar el contingut del fitxer després d'ometre la primera línia

L'opció '-F', la variable NR i la funció printf s'utilitzen a l'ordre següent 'awk' per generar una sortida formatada després d'ometre la primera línia. L'ordre dividirà el contingut del fitxer en columnes segons t, i printf imprimirà la primera i la segona columna quan el valor NR sigui com a mínim 2.

$gatbooklist.txt

$awk -F ' t' 'NR> = 2 {printf'% 30s% 20s n ', $ 1, $ 2}'booklist.txt

La següent sortida es produirà després d'executar les ordres anteriors. La sortida mostra el contingut formatat del fitxer, excloent la primera línia del fitxer.

Exemple 6: imprimiu els noms dels llibres després de saltar-vos la primera línia amb NR i NF

L'ordre següent 'awk' utilitza l'opció '-F' i NR i NF per imprimir els noms dels llibres després d'ometre el primer llibre. L’opció ‘-F’ s’utilitza per separar el contingut de la base de fitxers a t. NR s’utilitza per saltar la primera línia i NF s’utilitza només per imprimir la primera columna.

$gatbooklist.txt

$awk -F ' t' 'NR> 1 && NF = 1'booklist.txt

La següent sortida es produirà després d'executar les ordres anteriors. La sortida inclou tots els noms del llibre al fitxer, excepte el del primer llibre.

Exemple 7: imprimiu els noms d’autor formatats després d’ometre la primera línia

L'ordre 'awk' següent utilitza l'opció '-F' i una sentència condicional per imprimir els noms de l'autor després d'ometre la primera línia. Aquí, el valor NR s'utilitza en la condició if. Aquí, el nom de l'autor: n n s'imprimirà com a primera línia en lloc del contingut de la primera línia. Els noms de l’autor del fitxer s’imprimiran per a la resta de valors de NR.

$gatbooklist.txt

$awk -F ' t' '{if (NR == 1) printf' nNom de l'autor: n n '; else printf '% s n', $ 2} 'booklist.txt

La següent sortida es produirà després d'executar les ordres anteriors. A la sortida es mostra el text, nom de l’autor: amb una nova línia, i s’imprimeixen tots els noms d’autors, excepte el primer.

Conclusió

La primera línia d'un fitxer es pot ometre mitjançant diverses ordres de Linux. Com es mostra en aquest tutorial, hi ha diferents maneres d'ometre la primera línia d'un fitxer mitjançant l'ordre `awk`. Notablement, la variable NR de l'ordre `awk` es pot utilitzar per ometre la primera línia de qualsevol fitxer.