打印文件的前N个单词

Nic*_*ick 6 unix linux scripting awk

有没有办法打印文件的前N个单词?我试过切,但它逐行读取文件.我想出的唯一解决方案是:

sed ':a;N;$!ba;s/\n/?/g' file | cut -d " " -f -20 | sed 's/?/\n/g'
Run Code Online (Sandbox Code Playgroud)

基本上,用文件中不存在的字符替换换行符,将空格作为分隔符应用"cut",然后恢复换行符.

有没有更好的解决方案?

Gia*_*ian 0

为什么不尝试将你的单词变成行,然后直接使用呢head -n 20?

例如:

for i in `cat somefile`; do echo $i; done | head -n 20
Run Code Online (Sandbox Code Playgroud)

它并不优雅,但它的正则表达式的行噪声确实少得多。

  • 如果文件名包含通配符或以减号开头或......,它也会以神秘的方式失败。 (3认同)