在 UNIX 中是否可以打印文件的特定行?例如,我想打印 file 的第 10 行example.c
。我尝试使用cat
, ls
,awk
但显然这些没有该功能,或者我无法正确阅读man
:-)。
问问题
781 次
7 回答
9
使用 awk:
awk 'NR==10' file
使用 sed:
sed '10!d' file
于 2013-01-14T10:11:38.390 回答
7
sed -n '10{p;q;}' example.c
将为您打印第十行example.c
。
于 2013-01-14T10:11:00.867 回答
4
试试 head 和 tail,可以指定行数和从哪里开始。
要获得第三行:
head -n 3 yourfile.c | tail -n 1
于 2013-01-14T10:06:26.613 回答
2
head -n 10 /tmp/asdf | tail -n 1
于 2013-01-14T10:07:33.670 回答
2
不幸的是,如果提供的行号大于我们文件中的总行数,所有其他使用head
/的解决方案都不会正常工作。tail
如果 N 超过总行数,这将打印行号 N 或不打印:
grep "" file | grep "^20:"
如果要从输出中删除行号,请将其通过管道sed
:
grep "" file | grep "^20:" | sed 's/^20://'
于 2013-01-14T10:20:03.460 回答
1
试试这个:
cat -n <yourfile> | grep ^[[:space:]]*<NUMBER>[[:space:]].*$
cat -n 给文件编号
grep 的正则表达式搜索编号为 ;-) 的原始不匹配的行,如评论中所述。当前的一个寻找完全匹配的。- 即在特定的案例中,我们需要一行以任意数量的 ( ) 空格开头,然后是一个空格,然后是任何 (. )
万一有人翻过这个正则表达式并且根本不明白 - 这里有一个很好的教程可以帮助你入门:http ://regex.learncodethehardway.org/book/ (它使用 python 正则表达式作为例子)。
于 2013-01-14T10:15:15.193 回答
0
这可能对您有用:
sed '10q;d' file
于 2013-01-14T19:38:46.693 回答