2015-11-28 3 views
5

変数である特定のパターンと一致するファイルの行を削除しようとしています。Perl one-liner:パターンマッチングのある行を削除する

私はC-シェルスクリプトを書いてみましたなどABC12、abc13と一致する行、

を削除しようとしています、これはコードです:

**!/bin/csh 
    foreach $x (12 13 14 15 16 17) 
    perl -ni -e 'print unless /abc$x/' filename 
    end** 

これにはありませんしかし、私が変数(abc12)なしでone-linerを使用すると、動作します。

パターンマッチングに何か問題があるかどうか、または私に不足しているものがあるかどうかはわかりません。

+0

'perlの-i -ne '/ ABC1 [234567] /またはプリント' –

答えて

8

はい、実際には一重引用符を使用しています。これは、$xが文字通り解釈されていることを意味します。

もちろん、あなたはでもでも、これは非常に非効率的です。なぜなら、各ファイルを複数回処理しているからです。

あなたはabc17にラインabc12を取り除くために探している場合は、すべて一度にこれを行うことができますに:

perl -n -i.bak -e 'print unless m/abc1[234567]/' filename 
+0

おかげfilename'できます 。 – shiva1987

+0

あなたのニーズに合った答えがあれば、それを受け入れるべきです。 (その小さなチックの側で) – Sobrique

+0

申し訳ありませんが、私はそれを知らなかった、私はここに新しいです、チップのおかげで。 – shiva1987

関連する問題