2010-12-30 7 views
1

私はきれいにする必要があるファイルがたくさんあります。私は何かに等しい行の下のすべての行を削除する必要があります(その行も削除する必要があります)。行の後にファイルの内容を削除する "xxxxxxx"

どうすればbashで行うことができますか?

私は線を削除する方法の例が必要です、私はすべてのファイルを自分でループすることができます。

答えて

2

sedにそれを見て終了するように指示するのが最も簡単です。

sed -n '/xxxxxxx/q;p' input.txt 
+0

あなたは 'sed '/ xxxxxx/Q''(少し短く)でこれを行うこともできます。また、式をアンカーしてsedに '-i'を与えて、表示されるのではなくファイルが実際に変更されるようにしてください。 – cdhowie

+0

ありがとう、うまくいった。 – Meredith

0

あなたはPerlを使用することができます。これは、場所にファイルを置き換えます

perl -i.bak -pe 'exit if /xxxxxxx/' filename.txt ... 

+0

をしかし、私はそれを行う方法を尋ねbash。 – Meredith

+0

bash自体はこのタイプの操作には適していません。ジョブに適切なツールを使用してください。 –

+0

なぜネットかjavaか?真剣に、真ん中のテキストファイルをカットすることは、仕事をすることができる本当にperlですか? sedまたはawkは仕事には完全に適していて、perlはそうではないが、すべてのLinuxディストリビューションに付属しています。 – karatedog

0

は「sedの」あなたはあなたはまた、「AWK」を使用することができます もう少し複雑な要件を持っている場合は、これを行うための最も簡単な方法ですが。

{ 
    if ($0 == "xxxxxx") 
      exit 
    else 
      print $0 
} 

をし、シェルから次のコマンドを呼び出します:

この特定のケースでは、次の内容のファイル「foo.awk」を作成

awk -f foo.awk $FILE_NAME 
関連する問題