2017-11-30 13 views
1

異なるファイルに共通の行があり、別々のフォルダにあります。どのようにして、その行をフォルダのすべてのファイルでshell script sedコマンドを使用して他の行と置き換えることができますか?異なるフォルダにあるファイル内の行を置換するシェルスクリプト

例:T =「/ホーム/ file.txtは」フォルダ 同じ行にあるファイルのいずれかで存在はdifferntフォルダ

の異なるファイルに存在し、私はトンでそれを交換する必要があります= "/ desk/file1.txt"。だから、私はsedコマンドを実行することができますか?

+0

可能な重複を使用Linuxのコマンドラインのファイル](https://stackoverflow.com/questions/11392478/how-to-replace-a-string-in-multiple-files-in-linux-command-line) – LuFFy

+1

ようこそStackOverflow!これを行うにはいくつかの方法がありますが、StackOverflowは独自のコードを修正するのに役立ちます。無料のコンサルティングやコーディングサービスではありません。あなた自身の問題を解決しようとすると、困難に遭遇した場合、それは質問をする時間です。あなたの試行と結果を質問に追加してください。それが間違っていた場所を把握する手助けをするだけです。 – ghoti

答えて

0
find . -type f -exec sed -i 's/strng1/string2/g' {} + 

string1のstring2のに置き換えられます。現在のディレクトリとそのすべてのサブディレクトリ内のすべてのファイルが置き換えられます。あなたはGNUとBSD/Macの両方でこれを操作したい場合は、親ディレクトリ

からこのスクリプトを実行する必要があり、複数の文字列を置換する方法[この

find . -type f -exec sed -i.bak 's/strng1/string2/g' {} + 
+0

私はこれを試してみましたが、入力(>)を求めています。それは実行されません。help help – pavan

+0

'sed'の' -i'オプションの使用は、GNU sed(Linuxでは一般的ですが、他の亜種(* BSD、macOS、Solarisなど)では動作しません。プラットフォーム固有の問題ではないが解決策がある場合は、混乱を減らすために、その点を指摘することをお勧めします。あるいは、より良いことに、ポータブルなソリューションを提案してください。 – ghoti

+0

@ ghoti、この情報をありがとう。 –

関連する問題