2017-08-14 12 views
2

ログファイルがありますが、内部でデータを整理しようとしています。 sed 's/foo//g'のようなものを使いたいのですが、fooという単語をマッチさせるのではなく、fooから次のスペースまですべてを削除します。Unix - 正規表現にマッチする部分を削除する

私は(成功せず)みました:

sed -e -- 's/(?<=foo)(.*)(?=)//g'

任意のアイデア?

答えて

1

私はfooから次のスペースまですべてを削除します。あなたが使用することができます

sed 's/foo[^[:blank:]]*//g' file 

[^[:blank:]]は、スペースではなくタブではない任意の文字と一致します。

+1

ありがとうございます!魅力のように働いた。かなり巧妙な否定。 –

1

私はこのようにそれを行うだろう:

foo\S*(?=\s) 

\Sの非空白文字です。それはマッチの一部ではない正の先読みを持っているので、マッチ全体を削除することができます。 Demo

編集:

foo\S*\b 

Demo:実際に、それはワード境界で簡単に、より良いです。今すぐfoobarも行末に置くことができます。

関連する問題