複数のファイル編集処理¶
ファイル編集のステップ¶
- 編集するファイルのパスを取得する
- xargsで1行ずつパスをsedコマンドに渡す
- sedコマンドで変換処理を行う
コマンド内容¶
- コマンドの例
egrep -l '^ファイル検索ワード$' /path/to/* |xargs -L 1 sed -i.bak -r 's/^変換前ワード$/変換後ワード/'
- egrep -l
正規表現つきgrepにマッチするファイルのフルパスを表示 - xargs -L 1
egrepの結果が複数の場合、出力結果が1行ずつ次のコマンドに渡す - sed -i.bak
ファイルを直接編集し、変更前ファイルを拡張子.bakで同じディレクトリにバックアップする - sed -r
拡張正規表現を利用する。『^$*』などをエスケープ文字『\』なしで記述することができる
- egrep -l
補足¶
sedの処理で行まるごとではなく『カラム 値』の値だけ変更する場合。
- 次内部コマンドを指定する
sed -i.bak -r 's/(^カラム名 *)変更前値$/\1変更後値/'
- (^カラム名 *)
『()』で括った文字列は、変更後にそのまま引用することができる
『 *』はカラム名と値の間のスペースが複数あってもマッチするとする - 変更前値$
『値$』は行末を示す。
値の後にスペースやコメントがある場合は調整する必要がある。ただし何か指定しないと『param』で
マッチさせたら『param_name』『param_date』なども誤爆して引っかかるので注意が必要。 - \1変更後値
『\1』は前段で『()』で括った引用の1つ目を指す。
『()』が複数ある場合は『\2』等で指定することができる
- (^カラム名 *)