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