¿Puedo hacer que awk corte su input de acuerdo con '\ n'?

todos sabemos que podemos get las columnas de una línea usando awk, pero las columnas están divididas por espacios en blanco:

cat FileName | awk ' { print $1,$2,$3 .... }' 

pero qué pasa si queremos dividir los files de acuerdo con '\ n':
por ejemplo si tenemos este file:

 Hi Hello Aloha 

y queremos get la segunda palabra 'Hola' usando 'awk' ¿qué deberíamos hacer?

En awk, hay dos separadores principales: el separador de campo y el separador de logging. El separador de loggings separa diferentes grupos de campos. Como probablemente pueda adivinar a partir de esta descripción, el logging pnetworkingeterminado es una nueva línea. Puede acceder al índice de logging actual en la variable NR .

 awk 'NR==2 { print; exit }' 

También puede escribir awk NR==2 , pero awk lo hará (ya que no le dijo que salga después de encontrarlo) lealmente continúe procesando el rest del file después de que llegue a la línea 2, lo que puede tomar mucho time en una file grande. La exit le dice a awk que salga inmediatamente después de imprimir el logging 2.

Dependiendo de lo que trates de hacer aquí, es posible que puedas usar el modo "multi-line-record" de awk. Del manual Gawk's :

Si RS se establece en la cadena nula, los loggings están separados por líneas en blanco. Cuando RS se establece en la cadena nula, el carácter de nueva línea siempre actúa como un separador de campo, además del valor FS que pueda tener.

Entonces en tu caso podrías get la segunda línea así:

 awk '{ print $2 }' RS= FileName 

Salida:

 Hello 

También puedes usar sed para imprimir solo la segunda línea,

 sed -n '2p' file 

O:

 sed '2!d;q' file 

para que sed cierre después de haber leído e impreso la segunda línea para que no lea el rest del file.

O:

 head -n 2 file | tail -n 1