複数のファイル内の文字列の置換

UNIXにおいて、ファイル内の文字列の置換にはsedコマンドを利用することができます。例えば、fruits.txtファイル内の文字列AppleをOrangeに置換するには、以下のように行います。

$ sed -i".bkp" -e "s/Apple/Orange/g" fruits.txt

ここで、パラメータ「-i」は対象のファイルを直接書き換えることを指定していますが、直後に文字列を指定することで、その文字列がファイル名の後ろに付いたバックアップファイル(fruits.txt.bkp)を作成させています。

複数のファイルに対して同時に処理を行いたい場合は、findとxargsコマンドをsedと組み合わせます。findはファイルを検索するためのコマンドで、xargsは標準入力から渡された値を引数として任意のコマンドを実行するためのコマンドです。例えば、カレントディレクトリに存在する全てのファイル中のAppleをOrangeに置換するには、以下のように行います。

$ find . -maxdepth 1 -type f | xargs sed -i".bkp" -e "s/Apple/Orange/g"

 

コメントを残す

Required fields are marked *.


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

Top