Cor*_*ein 39 sed awk perl text-processing
使用像 sed 或 awk 这样的常用命令行工具,是否可以连接以给定字符结尾的所有行,如反斜杠?
例如,给定文件:
foo bar \
bash \
baz
dude \
happy
Run Code Online (Sandbox Code Playgroud)
我想得到这个输出:
foo bar bash baz
dude happy
Run Code Online (Sandbox Code Playgroud)
neu*_*ino 31
更短更简单的 sed 解决方案:
sed '
: again
/\\$/ {
N
s/\\\n//
t again
}
' textfile
Run Code Online (Sandbox Code Playgroud)
或单行如果使用 GNU sed:
sed ':x; /\\$/ { N; s/\\\n//; tx }' textfile
Run Code Online (Sandbox Code Playgroud)
Gil*_*il' 20
这是一个 awk 解决方案。如果一行以 a 结尾\,去掉反斜杠并打印没有终止换行符的行;否则打印带有终止换行符的行。
awk '{if (sub(/\\$/,"")) printf "%s", $0; else print $0}'
Run Code Online (Sandbox Code Playgroud)
cam*_*amh 20
使用 perl 可能最简单(因为 perl 就像 sed 和 awk,我希望您可以接受):
perl -p -e 's/\\\n//'
Run Code Online (Sandbox Code Playgroud)