2011-11-15 14 views
1

複数のファイルからテキストを削除したい。それは10から1000のファイルである可能性があるので、手動で削除することはあまりにも多くの作業です。 私のようなSOの質問のカップルが見つかりました: Delete specific lines in multiple Text Files with freeware App?をそれらのどれもが、検索と置換を行うために複数のファイルからテキストを削除する

を助けていない、私はperlのコマンドを書くことができ、それはオプションを欠いています。 たとえば、すべてのファイルの最初の4行を削除したいとします。 解決策を知っている人はいますか?それともアプリですか?私はVBScriptなしで何かを好むだろう。

答えて

2

sed(1)またはawk(1)をmyfileのための一時ファイルTTを動かすと呼ばれる一時ファイルに出力をリダイレクトします。たとえば、現在のディレクトリ内.txtのすべてのファイルの最初の4行を削除するには:

sed -i~ 1,4d *.txt 

これはどこでも、現在のディレクトリのサブディレクトリ内のすべての.txtファイルの最初の4行を削除します:

find . -type f -iname \*.txt -exec sed -i~ 1,4d '{}' + 
+0

ありがとうございます! – Lukas

1

SEDはおそらく非常にうまくいくでしょう。自由であり、あなたが望むものをたくさんすることができます。ウィンドウ、マック、およびLinuxポートがあります。

SED Stream Editor

2

のBBEditのTextWrangler(無料)は、複数のファイルに変更を加えるための能力を持っています。このコマンドは、「検索」メニューの「マルチファイル検索」です。

+0

ありがとうございますが、textwranglerがいくつかの行を削除する可能性がありますが、置き換えることはできますが、ファイル検索では私には良い結果が得られません。ご協力いただきありがとうございます! – Lukas

1

たとえば、複数のコードファイルからコメントを削除しようとしていて、すべてのコメントのようなパターンが#で始まっている場合は、コンソールを開いてファイルが存在するディレクトリに移動し、コマンド:

場合によっては、上に行数がコメントのテキストファイルがある場合があります。最初の3行を取り除きたいとしましょう。さて、ここでのトリックがある:ここでは

sed '1,3d' myFile > tt 
mv tt myFile 

は何が起こるかです:

  • sed '/^\#/d' myFileは、ファイルのmyFileから#で始まるすべての行を削除し、コンソールに結果を出力します。
  • > ttはTT
  • mv tt myFileがこの仕事のために素晴らしいことだ
関連する問題