**已关闭。**此问题为not about programming or software development。当前不接受答案。
此问题似乎与a specific programming problem, a software algorithm, or software tools primarily used by programmers无关。如果您认为此问题与another Stack Exchange site的主题有关,您可以留下评论,说明在何处可以回答此问题。
3天前关闭。
Improve this question
我想编写一个脚本,只使用grep显示文件的第三行,例如filename.txt,而不使用反引号&&,||或;或仅在一行中使用sed和awk。
所以我试了这个命令:grep -w "3" filename.txt
,但似乎不起作用,是否进行了整改?
4条答案
按热度按时间gopyfrb31#
不需要grep,因为您不是在搜索模式,而是要搜索第3行(或第 N 行)。
要获取第3行,您可以输出文件中的前3行,然后从这3行中获取最后一行:
head -3 filename.txt | tail -1
您提到了反勾号,所以如果您想赋值或输出它,请将它包含在
$(...)
中,而不是反勾号中。linethree=$(head -3 filename.txt | tail -1)
如果文件非常大,并且所需的行 N 在文件中很远,则使用sed会更有效,例如
sed 4321q;d filename.txt
或sed <n>q;d filename.txt
如this answer中所概述的。
oiopk7p52#
使用BASH版本4或更高版本
mapfile
:使用
mapfile
仅读取第三行-s 2
将丢弃2行,-n 1
仅将1行复制到名为third_line
的数组中:输出数组内容:
drnojrws3#
可以使用
grep -n
对行进行编号,然后将输出通过管道传输到另一个grep以提取第三行:如果需要从行的开头删除
3:
,可以将其通过管道传输到或者,如果您坚持使用
grep
,则可以使用即,仅输出在一行开始处的以
3:
为前导的部分(但是并不是所有地方都支持-P
)。1qczuiv04#
如果允许
tail
: