修剪文本而不循环

修剪文本而不循环

输入(以变量 $VAR 形式):

'yoo' : x'yoo' 'welcome' : x'welcome' 'we' : x'we' 'dum' : x'dum' 'test' : x'test' 'poo' : x'poo' 'D2-dog' : x'D2-dog' 'ant' : x'ant' 'rat' : x'rat' 'xmass' : x'xmass'

我想要输出为:

yoo welcome we dum test poo D2-dog ant rat xmass

我不希望输出为:

yoo
welcome
we
dum
test
poo
D2-dog
ant
rat
xmass

我尝试过, echo $VAR | sed "s/' : x'//g" 但它很混乱,而且不是我所期望的。

我们可以使用cutortr或 吗sed

在亚历克斯回答后编辑:我对不同的文本有问题:

echo "'yoo' : x'yoo' 'welcome' : x'welcome' 'we' : x'we' 'test' : x'test' 'poo' : x'poo' 'dog' : x'dog' 'ant' : x'ant' 'rat' : x'rat' 'xmass' : x'xmass' 'exp' : x'exp' 'S-123': x'S-123' 'demo': x'demo' 'neu': x'neu'" | sed -e "s/'\([^']*\)' : x'\1'/\1/g"

我得到的输出为

yoo welcome we test poo dog ant rat xmass exp 'S-123': x'S-123' 'demo': x'demo' 'neu': x'neu'

奇怪,无法找出问题所在!

答案1

sed -e "s/'\([^']*\)' \?: x'\1'/\1/g"

像这样运行:

$ MYVAR="'yoo' : x'yoo' 'welcome' : x'welcome' 'we' : x'we' 'dum' : x'dum' 'test' : x'test' 'poo' : x'poo' 'D2-dog' : x'D2-dog' 'ant' : x'ant' 'rat' : x'rat' 'xmass' : x'xmass'"
$ echo "$MYVAR" | sed -e "s/'\([^']*\)' \?: x'\1'/\1/g"
yoo welcome we dum test poo D2-dog ant rat xmass

这是可行的,因为\X反向引用也可以作为扩展搜索模式的一部分出现。

编辑:更改了 RexExp 以使冒号之前的空格可选

相关内容