約500文字の行から読んでいます。その文字列を何かに置き換える代わりに、行の残りの部分を何かに置き換えるにはどうすればよいですか? 要するに、指定された文字列の周りのすべてのテキストを削除したいのです。一致した文字列の前後に不確定な量の文字があるため、awk を使用した列の削除は機能しません。何か案は?
7931 次
1 に答える
11
後方参照を使用してみてください:
sed 's/.*\(searchstring\).*/___\1___/'
検索文字列の前後の.*
's は文字列以外のすべてに一致し、括弧はsed
一致したものを記憶するように指示します。で最初に一致した文字列を参照できます\1
。
以下に例を示します (「bar baz」以外のすべてを置き換えます):
$ echo "foo bar baz qux" | sed 's/.*\(bar baz\).*/___\1___/'
___bar baz___
上記の 'bar baz' を好きなパターンに置き換えることができます。簡単にするために基本的な文字列を使用しました。
于 2009-04-11T04:00:18.347 に答える