4

在 UNIX 中是否可以打印文件的特定行?例如,我想打印 file 的第 10 行example.c。我尝试使用cat, lsawk但显然这些没有该功能,或者我无法正确阅读man:-)。

4

7 回答 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 回答