繁体   English   中英

如何反转sed输出?

[英]How to reverse sed output?

我正在读一行大约500个字符。 我如何获得sed,而不是用某些东西替换该字符串,用一些东西替换其余部分? 简而言之,我想删除指定字符串周围的所有文本。 使用awk删除列将不起作用,因为在匹配的字符串之前和之后存在不确定数量的字符。 有任何想法吗?

尝试使用反向引用:

sed 's/.*\(searchstring\).*/___\1___/'

搜索字符串周围的.*将匹配除字符串之外的所有内容,并且括号告诉sed记住匹配的内容。 您可以使用\\1引用第一个匹配的字符串。

这是一个例子(替换除了'bar baz'之外的所有内容):

$ echo "foo bar baz qux" | sed 's/.*\(bar baz\).*/___\1___/'
___bar baz___

你可以用你喜欢的任何模式替换'bar baz'; 为简单起见,我只使用了基本字符串。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM