我有一个sed
表达式可以从文件中的所有行中删除前 2 个字符。
sed 's/^..//' raw.txt > converted.txt
Run Code Online (Sandbox Code Playgroud)
但是,问题是有些行很大并且会附加到下一行。例如,如果我将输入视为以下几行,
? I have box and space in front
? I am a large line which will
get appended to next line.
? I am another line.
Run Code Online (Sandbox Code Playgroud)
根据我的sed
语法,我得到的输出是,
I have box and space in front
I am a large line which will
t appended to next line.
I am another line.
Run Code Online (Sandbox Code Playgroud)
但是,我期望的输出是,
I have box and space in front.
I am a large line which will get appended to next line.
I am another line.
Run Code Online (Sandbox Code Playgroud)
我应该如何修改 sed 表达式来实现这一点?
可能更容易awk
:
awk '{
if (/^? /) printf "%s", (NR>1?"\n":"") substr($0,3)
else printf " %s", $0
}
END {if (NR>0) print ""}'
Run Code Online (Sandbox Code Playgroud)