Coreutils

當我沒有可用的 -z 選項時,如何執行等效的 head -z

  • September 5, 2018

我需要head -z一個腳本(題外話,但可以在這個問題中找到動機),但在我的 CoreOS 835.13.0 中我得到了head: invalid option -- 'z'.

完整head --help輸出:

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'

有趣的是,最後一行告訴我要執行info coreutils 'head invocation',但我得到了info: command not found.

在 head 前後交換 NUL 和 NL:

&lt;file tr '\0\n' '\n\0' | head | tr '\n\0' '\0\n'

使用最新版本的 GNU sed

sed -z 10q

使用 GNU awk

gawk -v RS='\0' -v ORS='\0' '{print}; NR == 10 {exit}'

引用自:https://unix.stackexchange.com/questions/467066