打印给定行号的文件行

时间:2013-01-14 10:05:35

标签: bash unix

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

7 个答案:

答案 0 :(得分:8)

使用awk:

awk 'NR==10' file

使用sed:

sed '10!d' file

答案 1 :(得分:7)

sed -n '10{p;q;}' example.c

将为您打印example.c的第十行。

答案 2 :(得分:4)

尝试头尾,您可以指定行数和起始位置。

获得第三行:

head -n 3 yourfile.c | tail -n 1

答案 3 :(得分:2)

head -n 10 /tmp/asdf | tail -n 1

答案 4 :(得分:2)

不幸的是,如果提供的行号大于我们文件中的行总数,则使用head / tail的所有其他解决方案将无法正常工作。

如果N超出总行数,则会打印行号N或

grep "" file | grep "^20:"

如果要从输出中剪切行号,请通过sed

进行管道传输
grep "" file | grep "^20:" | sed 's/^20://'

答案 5 :(得分:1)

试试这个:

cat -n <yourfile> | grep ^[[:space:]]*<NUMBER>[[:space:]].*$

cat -n为文件编号

grep的正则表达式搜索编号的行;-) 如评论中所述,原始不匹配。 当前的一个查找完全匹配。 - 即在特定的cas中,我们需要一个以任意数量()的空格开头的行,后跟一个空格,后跟任何一个(。

如果有人在这个正则表达式上绊倒并且根本没有得到它 - 这是一个很好的教程,可以帮助你入门:http://regex.learncodethehardway.org/book/(它使用python regex作为一个例子很难)。

答案 6 :(得分:0)

这可能对您有用:

sed '10q;d' file