2012-08-10 3 views
12

私はプレーンテキストを含む約100の.txtファイルを持っています。どういうわけか、データの一部が破損しているため、見つけて交換する必要があります。Terminalから複数の.txtファイルをすばやく検索/置換できますか?

私は文字を検索する必要があります「 - 」と長いダッシュに置き換えます:「 - 」。

ターミナルのコマンドでこれを迅速に実行する方法はありますか?私のディレクトリ内の.txtファイルの

名が順番に番号が付けられ:1.TXT、2.txtなど

ありがとう!

+0

可能[重複](http://stackoverflow.com/q/を8384809/148680) – chb

+0

コモド編集(http://www.activestate.com/komodo-edit)には「ファイルの検索/置換」機能があります。 Mac、Windows、Linux用のフリーエディタです。 – jsherk

答えて

34

GNU sed

sed -i 's/--/—/g' *.txt 

OSX BSD sed

あなたは、バックアップファイルの拡張子を指定する必要があります。 、完全にファイルを置き換えるには

sed -i '.bak' 's/--/—/g' *.txt 

空の拡張子を指定します:.txt.bak:拡張子を持つバックアップファイルを作成するには

sed -i '' 's/--/—/g' *.txt 
+0

それはそれをしました!おかげで – Lizza

+0

@キャスパー:喜んで助けることができる:-) – Steve

+0

「OSX」の見出しの意味はなんですか?最初の例はOS Xでは動作しませんか? [援助の答えを読む。]ああ。最初の例について何か、何が違うのか、どのプラットフォームで違うのかを教えてください。また、OS X特有の2番目の例は、BSDにも適用されますか? –

3

sed -i 's/--/–/g' *.txtはすべきです。 sed-iフラグが、それはその場でのファイルに作用します代替用sスタンド、およびgは、同じライン上のパターンを複数回交換することができます。詳細については、sedのドキュメントを参照してください。

EDIT:これはGNU/Linux上で動作します。 OSXでは構文が少し違っていることが判明しました(コメントと受け入れられた回答を参照)。

+0

だから私はかなりコマンドラインに新しいです...私はちょうどあなたのコマンドをファイルのディレクトリのターミナルに入れ、これを得ました:sed:1: "base1.txt":未定義のラベル 'ase1.txt'。何かご意見は?ありがとう! – Lizza

+0

私は、ファイルが実際に元の質問に記載された方法で実際には名前が付けられていないことに気付きました。それらの名前は、base1.txt、base2.txtなどと呼ばれます。 – Lizza

+0

@キャスパー:そうではありません。 OSXの作品に 'sed':sedを::1: "base1.txt": – Steve

関連する問題