2009-04-11 10 views
9

私は約500文字の行から読んでいます。その文字列を何かに置き換える代わりに、残りの行を何かに置き換えるにはどうすればよいでしょうか?つまり、指定した文字列のすべてのテキストを削除したいと考えています。一致した文字列の前後に不確定な文字があるため、awkで列を削除することはできません。 アイデアsed出力を逆にする方法は?

答えて

10

は、参照をバック使用してみてください:検索文字列の周り

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

.*年代には文字列以外のすべてを一致し、括弧は、それがマッチしたものを覚えておくことがsedを教えてください。最初に一致した文字列は\1で参照できます。

は、ここで(「バーバズ」以外のすべてを置き換える)の例です:

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

あなたは上記の中で好きなパターンで「バーバズ」を置き換えることができます。私は単純化のために基本的な文字列を使用しました。

関連する問題