我正在阅读大约 500 个字符的行。我怎样才能让 sed 不用某些东西替换该字符串,而是用某些东西替换该行的其余部分?
简而言之,我想删除指定字符串周围的所有文本。使用 awk 删除列不起作用,因为匹配的字符串前后有不确定数量的字符。
有任何想法吗?
尝试使用反向引用:
sed 's/.*\(searchstring\).*/___\1___/'
The .*
搜索字符串周围的 ' 将匹配除该字符串之外的所有内容,并且括号告诉sed
记住它匹配的内容。您可以使用以下命令引用第一个匹配的字符串\1
.
这是一个示例(替换除“bar baz”之外的所有内容):
$ echo "foo bar baz qux" | sed 's/.*\(bar baz\).*/___\1___/'
___bar baz___
您可以将“bar baz”替换为上面您喜欢的任何模式;为了简单起见,我只使用了一个基本字符串。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)