Bashでテキスト行を別のテキスト行に置き換える

Bashでテキスト行を別のテキスト行に置き換える

ファイルのテキスト行を別のファイルに変更したいと思います。例:私が持っているテキスト

エクスポート GEOFIL='/afs/in2p3.fr/home/throng/antares/DETECTOR/r12_c00_s01.det 1 1'

新しいものに交換したい

エクスポート GEOFIL='/pbs/throng/antares/DETECTOR/r12_c00_s01.det 1 1'

これは、現在のディレクトリ内のすべてのファイルに対して実行する必要があります。

答え1

使用sedコマンド:

sed -i -e 's#/afs/in2p3.fr/home/#/pbs/#' the_filename

メモ:

  • -iオプションは、出力と呼ばれるファイルの内容を変更してthe_filename新しいファイルを作成するために使用されます。
  • #sテキストに/文字が含まれているので、sed コマンドに文字を使用します。

現在のディレクトリ内のすべてのファイルに対して実行するには、次の手順を実行します。

find . -maxdepth 1 -type f -exec sed -i -e 's#/afs/in2p3.fr/home/#/pbs/#' {} \;

メモ:

  • .: 現在のディレクトリで作業
  • -type f:標準ファイルにのみ適用されます。
  • -maxdepth 1:サブディレクトリではなく、現在のディレクトリ(深さ= 1)でのみ機能します。
  • {}findコマンドで見つけたファイル名に置き換えます。
  • \;-execオプションの終わりです。

関連情報