数千行の巨大なファイルがあります。「Foo」という単語が含まれている行のみを削除したいと思います。
どうすればこれを行うことができますか?私はMacを使用しているので、コマンドラインユーティリティを使用できますが、TextWranglerを使用したいと思います。
ほとんどのグラフィカルプログラマーのエディターでは、このような行を削除することはできず、内容を変更するだけです。これは、^.*Foo.*$
を何にも置き換えずに行うことができます。
外部ツールを検討したい場合は、sed "/Foo/d"
でフィルタリングすることでこれを行うことができます。
TextWranglerの場合:Text> Process LinesContaining…
このための簡単なコマンドラインは次のとおりです。
grep -v myword myfile > newfile
正規表現を使用して行を検索し、それらを空の文字列に置き換えます。
正規表現の作成方法を説明するページは次のとおりです。
http://www.regular-expressions.info/completelines.html
TextWranglerでこれを行うには:
裸の骨TextWrangler http://www.barebones.com/products/textwrangler/
…メニュー項目を含むテキストメニュープロセスライン
削除するテキストを入力してから、行の削除を選択します
確認
このPerlコマンドラインでうまくいきます!
Perl -ni -e "print unless /Foo/" large_file.txt
複数のファイルを作成することもできます。
Perl -ni -e "print unless /Foo/" *.txt
^.*Foo.*\r
を何も指定せずに(「UseGrep」を有効にして)検索して置き換えると、「Foo」が含まれている行が空白になるだけでなく、完全に削除されます。唯一の制限は、ファイルの最後の行では機能しないことです。 (\r.*Foo.*$
を何も置き換えないと、最後の行では機能しますが、最初の行では機能しません。)