我正在读一行大约500个字符.我如何获得sed,而不是用某些东西替换该字符串,用一些东西替换其余部分?简而言之,我想删除指定字符串周围的所有文本.使用awk删除列将不起作用,因为在匹配的字符串之前和之后存在不确定数量的字符.有任何想法吗?
Tod*_*lin 11
尝试使用反向引用:
sed 's/.*\(searchstring\).*/___\1___/'
Run Code Online (Sandbox Code Playgroud)
在.*的周围的搜索字符串会匹配一切,但字符串,括号告诉sed记住它匹配.您可以参考第一个匹配的字符串\1.
这是一个例子(替换除了'bar baz'之外的所有内容):
$ echo "foo bar baz qux" | sed 's/.*\(bar baz\).*/___\1___/'
___bar baz___
Run Code Online (Sandbox Code Playgroud)
你可以用你喜欢的任何模式替换'bar baz'; 为简单起见,我只使用了基本字符串.