使用sed/awk从子节中删除字符串

Cly*_*ber 4 regex perl awk sed

我有一个看起来像这样的文件:

bar
barfo
barfoo
barfooo
barfoooo

sample
sampleText1
sampleText2
sampleText3

prefix
prefixFooBar
prefixBarFoo
Run Code Online (Sandbox Code Playgroud)

我想要sed(或awk)做的是从其所有内容中删除引入节的字符串,以便我最终得到:

bar
fo
foo
fooo
foooo

sample
Text1
Text2
Text3

prefix
FooBar
BarFoo
Run Code Online (Sandbox Code Playgroud)

我试过用

sed -e -i '/([[:alpha:]]+)/,/^$/ s/\1//g' file
Run Code Online (Sandbox Code Playgroud)

但是,"无效的反向引用"失败了.

Ed *_*ton 5

$ awk '{$0=substr($0,idx)} !idx{idx=length($0)+1} !NF{idx=0} 1' file
bar
fo
foo
fooo
foooo

sample
Text1
Text2
Text3

prefix
FooBar
BarFoo
Run Code Online (Sandbox Code Playgroud)