Tom*_*ino 5 sed awk text-processing
我试图找到 sed 命令来删除行尾(意思是,将下一行移到当前行),但前提是行以字符串 NOTOK 开头。
示例输入:
NOTOK something detected
details are : some info
Run Code Online (Sandbox Code Playgroud)
输出应该是:
NOTOK something detected details are : some info
Run Code Online (Sandbox Code Playgroud)
sed '/NOTOK/ { N; s/\n// }'
Run Code Online (Sandbox Code Playgroud)
如果您的 sed 实现不支持;分隔命令(GNU sed支持,但它不是标准的):
sed -e '/^NOTOK/ {' -e 'N' -e 's/\n//' -e '}'
Run Code Online (Sandbox Code Playgroud)
Sed 很快变得神秘;任何比一个或多个s命令更复杂的东西都是 awk 的好选择。
awk '/^NOTOK/ {printf "%s", $0; next} 1 {print}'
Run Code Online (Sandbox Code Playgroud)
或者
awk '/NOTOK/ {getline n; $0 = $0 n} 1'
Run Code Online (Sandbox Code Playgroud)