如何使用 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
很棒,但这里不需要cat
。 awk 'NR == 2 print $0' <file>
做同样的事情。 (还有更多,如果你了解一点awk
。【参考方案7】:
我很惊讶这个问题一直存在,而且还没有人提供 pre-mapfile 内置方法。
IFS= read -r first_line <file
...将文件的第一行放入以"$first_line"
扩展的变量中,就这么简单。
此外,由于read
内置在 bash 中,并且这种用法不需要子 shell,因此它比涉及诸如 head
或 awk
等子进程的方法要高效得多。
【讨论】:
开头的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 文件的第一行