如何使用cat读取文件的第一行?


Answers:


374

您不需要cat

head -1 file

会很好的工作。


65
+1。您只需要头部,而不是整个猫:P(命令尾巴也是bash双关语的一部分)
SparK 2014年

head读取整个文件并将其剪切,还是仅读取1行?
CMCDragonkai

@CMCDragonkai,我想您可以检查
卡尔·诺鲁姆

2
我猜它只读取第一行-它以毫秒为单位打开了一个数百兆的文件。
Brian Haak 2015年

1
...得到它了!cat <(head file1) <(head file2)消息来源
James Owers,2015年


41

有很多不同的方法:

sed -n 1p file
head -n 1 file
awk 'NR==1' file

21

您可以使用cat file.txt | head -1,但是直接使用head可能更好,例如中的head -1 file.txt


16

使用可能无法做到这一点cat。您有使用理由吗cat吗?

如果您只需要使用bash命令执行此操作,那么这应该对您有用:

head -n 1 file.txt

9

cat可能无法单独使用,但是如果您不想使用head此功能:

 cat <file> | awk 'NR == 1'

2
我想在专门设计为使用的行上喊出“猫的无用使用”是愚蠢的,不是吗cat
jkerian 2011年

此方法很棒,因为您可以选择所需的任何行。
desgua

3
@desgua awk很棒,但是您不需要cat这里。awk 'NR == 2 {print $0}' <file>做同样的事情。(还有更多,如果你学会了一点awk
埃里克·威尔逊

5

我很惊讶这个问题已经存在很久了,而且还没有人提供内置的pre-mapfile方法。

IFS= read -r first_line <file

...将文件的第一行放在扩展为的变量中"$first_line",如此简单。

而且,由于read内置在bash中,并且这种用法不需要​​子shell,因此它比涉及诸如head或的子过程的方法要有效得多awk


一开始是什么IFS=部分?
弗洛里安·卡斯泰拉内


对; 在这种情况下,清除将IFS防止从读取的字符串中删除前导空格和尾随空格。
查尔斯·达菲

3

如果您有bash v4 +,则不需要任何外部命令

< file.txt mapfile -n1 && echo ${MAPFILE[0]}

或者如果你真的想要 cat

cat file.txt | mapfile -n1 && echo ${MAPFILE[0]}

:)


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.