给定以下文件,第1行为空白:
\n
Line 2\n
Line 3\n
你将如何只输出"第2行和第34行;用sed?
欢迎使用其他标准UNIX工具的解决方案,例如awk。
答案 0 :(得分:4)
将grep版本与-m
开关一起使用,例如GNU grep:
grep -m 1 . file
这会在1个匹配行后停止读取文件。 .
匹配任何字符,因此第一个非空行将匹配。
使用任何版本的awk(与sed版本基本相同):
awk '/./{print;exit}' file
答案 1 :(得分:2)
sed -n ' # use -n option to suppress line echoing
/./ { # match non-blank lines and perform the enclosed functions
# print the non-blank line, i.e., "Line 2"
p
# quit right after printing the first non-blank line
q
}
' file
sed -n '/./{p;q;}' file
答案 2 :(得分:0)
如果您有一个空行,示例可以工作,但如果您的行包含空格或制表符等字符,则不行。
我认为即使“空白”行包含空格或制表符,此版本也能正常工作。
sed'/ [^ [:blank:]] / q; d'file