我正在尝试找到一种方法来删除第一个单词中的所有字符,前提是该字符位于第二个单词中。输入看起来像这样:
电脑费用
结果应为:“mpuer”,因为删除了c,o和t。像这样的多行之间用回车符分隔,两个单词之间用空格分隔。
我已经花了很多时间寻找解决方案,但是我真的很坚持。感谢所有帮助。
最佳答案
这可能对您有用:
echo "computer cost" |
sed ':a;s/\(.\)\(.* .*\1.*\)/\2/;ta;s/ .*//'
mpuer
说明:
:a;
s/\(.\)\(.* .*\1.*\)/\2/
ta
s/ .*//
替换正则表达式可以进一步解释:
\(.\)
匹配单词word(后来称为\1
)中的任何字符\(.* .*\1.*\)
匹配单词.*
其余词中的所有字符,后跟空格
,然后单词2 .*
中的某些字符上没有字符,再匹配单词一\1
中的匹配字符,然后匹配单词二.*
中的其余字符,稍后将进行分组被称为\2
。 \2
,从而有效删除匹配的字符\1