在尝试读取vim
的版本号时,我得到了许多额外的行,我需要忽略它们。我试着阅读head
的手册并尝试了以下命令:
vim --version | head -n 1
我想知道这是否是正确的做法?
答案 0 :(得分:65)
是的,这是从命令获取第一行输出的一种方法。
如果命令输出任何您希望以相同方式捕获的标准错误,则需要将命令的标准错误重定向到标准输出流:
utility 2>&1 | head -n 1
还有许多其他方法可以捕获第一行,包括sed 1q
(在第一行之后退出),sed -n 1p
(仅打印第一行,但只读取所有内容),awk 'FNR == 1'
(只打印第一行,但再次读取所有内容)等。
答案 1 :(得分:2)
我会使用:
awk 'FNR <= 1' file_*.txt
@Kusalananda指出,有很多方法可以捕获命令行的第一行,但是使用head -n 1
可能不是使用通配符的最佳选择,因为它会打印其他信息。将'FNR == i'
更改为'FNR <= i'
可以获取前i行。
例如,如果您有n个名为file_1.txt的文件,... file_n.txt:
awk 'FNR <= 1' file_*.txt
hello
...
bye
但是使用head
通配符可以打印文件名:
head -1 file_*.txt
==> file_1.csv <==
hello
...
==> file_n.csv <==
bye