【发布时间】:2015-07-16 09:24:36
【问题描述】:
给定以下文件,其中第 1 行为空白:
\n
Line 2\n
Line 3\n
如何使用 sed 仅输出“第 2 行”?
欢迎使用其他标准 UNIX 工具(例如 awk)的解决方案。
【问题讨论】:
标签: shell unix awk sed text-parsing
给定以下文件,其中第 1 行为空白:
\n
Line 2\n
Line 3\n
如何使用 sed 仅输出“第 2 行”?
欢迎使用其他标准 UNIX 工具(例如 awk)的解决方案。
【问题讨论】:
标签: shell unix awk sed text-parsing
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
【讨论】:
sed '/./q;d' file,但两者都可以。
-n 选项没有提供给 sed,它会。 q 在这方面类似于 n。这种行为在这种情况下可以很好地使用,但老实说,它经常令人烦恼。 GNU sed 有一个 Q 命令,因为这个原因,无论 -n 是什么,它都会退出而不打印。
如果您有一个空行,则示例有效,但如果您的行包含空格或制表符等字符,则示例无效。
我认为即使“空白”行包含空格或制表符,这个版本也可以工作。
sed '/[^[:blank:]]/q;d' 文件
【讨论】: