Como posso executar um equivalente de 'head -z' quando não tenho a opção '-z' disponível?

3

Eu preciso de head -z para um script (fora do tópico, mas a motivação pode ser encontrada nesta questão ) , mas no meu CoreOS 835.13.0 eu recebo head: invalid option -- 'z' .

total head --help output:

Usage: head [OPTION]... [FILE]...
Print the first 10 lines of each FILE to standard output.
With more than one FILE, precede each with a header giving the file name.
With no FILE, or when FILE is -, read standard input.

Mandatory arguments to long options are mandatory for short options too.
  -c, --bytes=[-]K         print the first K bytes of each file;
                             with the leading '-', print all but the last
                             K bytes of each file
  -n, --lines=[-]K         print the first K lines instead of the first 10;
                             with the leading '-', print all but the last
                             K lines of each file
  -q, --quiet, --silent    never print headers giving file names
  -v, --verbose            always print headers giving file names
      --help     display this help and exit
      --version  output version information and exit

K may have a multiplier suffix:
b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024,
GB 1000*1000*1000, G 1024*1024*1024, and so on for T, P, E, Z, Y.

GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
Report head translation bugs to <http://translationproject.org/team/>
For complete documentation, run: info coreutils 'head invocation'

A parte engraçada é que a última linha me diz para executar info coreutils 'head invocation' , mas eu recebo info: command not found .

    
por Pedro A 05.09.2018 / 17:57

1 resposta

4

Trocar NULs e NLs antes e depois da cabeça:

<file tr '
sed -z 10q
\n' '\n
gawk -v RS='
<file tr '
sed -z 10q
\n' '\n
gawk -v RS='%pre%' -v ORS='%pre%' '{print}; NR == 10 {exit}'
' | head | tr '\n%pre%' '%pre%\n'
' -v ORS='%pre%' '{print}; NR == 10 {exit}'
' | head | tr '\n%pre%' '%pre%\n'

Com versões recentes do GNU sed :

%pre%

Com o GNU awk :

%pre%     
por 05.09.2018 / 18:26