2

このフォーラムで同様の質問を見ましたが、この質問はそれらの質問と少し異なります。したがって、これを重複と見なさないでください。

次のデータを含むファイルがあります

blah blah
blah blah Select from table blah blah QWERTY blah
Select from table
QWERTY Here
blah blah

Select from table今、両方を持つすべての行を削除したいと思いますQWERTY

期待される出力:

blah blah
Select from table
QWERTY Here
blah blah

私は以下のように試しました:

sed /*Select from table*QWERTY*/d file.txt

しかし、それは機能していません。誰でもこれについて助けてもらえますか?

4

1 に答える 1

3

あなたはあなたのsed試みに近かった:

$ sed '/Select from table.*QWERTY/d' file
blah blah
Select from table
QWERTY Here
blah blah

スクリプトは常に一重引用符で囲む必要があり、シェルのグロビングと正規表現を混同しないでください。正規表現を使用して 0 個以上の任意の文字に一致させるには、.*.


順序が保証されている場合は、次のオプションgrepを使用して簡単に実行できます。-v

$ grep -v 'Select from table.*QWERTY' file
blah blah
Select from table
QWERTY Here
blah blah

順序が保証されていない場合awkは、正規表現の一致を論理演算子と組み合わせることができるような言語を使用します。

$ awk '!/Select from table/||!/QWERTY/' file
blah blah
Select from table
QWERTY Here
blah blah
于 2013-08-28T12:54:28.457 に答える