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