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

Posted

技术标签:

【中文标题】如何使用 cat 读取文件的第一行?【英文标题】:How do I read the first line of a file using cat? 【发布时间】:2011-09-01 03:06:55 【问题描述】:

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

【问题讨论】:

【参考方案1】:

您不需要cat

head -1 file

会正常工作。

【讨论】:

+1。你只需要头部而不是整个猫:P(命令尾部也是 bash 双关语的一部分) head 是读取整个文件并剪切,还是只读取 1 行? @CMCDragonkai,我想你可以查看source。 我猜它只读取第一行 - 它会在几毫秒内打开一个数百兆字节的文件。 ...明白了! cat <(head file1) <(head file2)。 Source【参考方案2】:

你不用,改用head

head -n 1 file.txt

【讨论】:

【参考方案3】:

有很多不同的方法:

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

【讨论】:

我们什么时候应该使用哪个?【参考方案4】:

你可以使用cat file.txt | head -1,但最好直接使用head,比如head -1 file.txt

【讨论】:

【参考方案5】:

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

如果您只需要使用 bash 命令执行此操作,这应该适合您:

head -n 1 file.txt

【讨论】:

【参考方案6】:

cat 可能无法单独使用,但如果您不想使用 head,则此方法可行:

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

【讨论】:

我认为在专门设计用于使用 cat 的行上喊出“无用的 cat”是愚蠢的,不是吗。 这个方法很棒,因为你可以选择任何你想要的线。 @desgua awk 很棒,但这里不需要catawk 'NR == 2 print $0' &lt;file&gt; 做同样的事情。 (还有更多,如果你了解一点awk【参考方案7】:

我很惊讶这个问题一直存在,而且还没有人提供 pre-mapfile 内置方法。

IFS= read -r first_line <file

...将文件的第一行放入以"$first_line" 扩展的变量中,就这么简单。

此外,由于read 内置在 bash 中,并且这种用法不需要​​子 shell,因此它比涉及诸如 headawk 等子进程的方法要高效得多。

【讨论】:

开头的IFS= 部分是什么? 我的错,这里有一个解释:unix.stackexchange.com/questions/184863/… 对;在这种情况下,清除 IFS 可以防止从读取的字符串中去除前导和尾随空格。【参考方案8】:

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

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

或者如果你真的想要cat

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

:)

【讨论】:

【参考方案9】:

使用以下命令从 CSV 文件或任何文件格式中获取第一行。

head -1 FileName.csv

【讨论】:

【参考方案10】:

这个问题有很多很好的答案。如果你想用lolcat 做的话,就再往篮子里扔一个吧

lolcat FileName.csv | head -n 1

【讨论】:

【参考方案11】:

在列表中添加一个更令人讨厌的替代方案:

perl -pe'$.<=1||last' file
# or 
perl -pe'$.<=1||last' < file
# or
cat file | perl -pe'$.<=1||last'

【讨论】:

以上是关于如何使用 cat 读取文件的第一行?的主要内容,如果未能解决你的问题,请参考以下文章

只读取文件的第一行?

使用 Pyspark 使用 Spark 读取巨大 Json 文件的第一行

python读取指定目录中所有文本文件的第一行,并以此为该文本文件名重命名

linux shell读取文件每一行加入用户输入

linux 三剑客之awk

如何使用 ANT 仅读取 file.txt 的第一行?