平成31/ 2019-04-25 19:55
Linux, Replace, grep, sed, 一括置換

(( BSD ))
(対象ファイルを確認)
find ./ -type f | egrep '\.html$' | egrep -v '[0-9]{4}' | xargs egrep 'a +href="\/sp(\/(#|ce|cr|g|b|p|d|s|r|a)[^"]+)"'

(とりあえず1つやってみる)
(\1で正規表現の値使える。
(BSDの場合でバックアップいらないときも、-i '' のように指定しないとダメ)
(ダブルクォーテーションや、シングルクォーテーションのエスケープは無いみたいなので -E '' か -E "" で工夫しないとダメ)
(-E オプションを使わないと正規表現が有効にならない)
find sp/crowding.html -type f | xargs sed -i '' -E 's/a +href="\/sp(\/(#|ce|cr|g|b|p|d|s|r|a)[^"]+)"/a href="\1"/g'

(全部やる)
find ./ -type f | egrep '\.html$' | egrep -v '[0-9]{4}' | xargs sed -i '' -E 's/a +href="\/sp(\/(#|ce|cr|g|b|p|d|s|r|a)[^"]+)"/a href="\1"/g'




(( LINUX? ))
1.対象を確認
find */admin_lp/c_edit.html -print | egrep '\.html$' | xargs grep '\["width"\] = "110";'

    find -type f してもディレクトリを評価してしまうので、egrep '\.html$' している。


2.まずは一枚やってみる。
find hoge/admin_lp/c_edit.html -print | xargs grep '\["width"\] = "110";'
find hoge/admin_lp/c_edit.html -print | xargs sed -i.20110531_1221 's/\["width"\] = "110";/\["width"\] = "165";/g'

3.対象のファイルを確認する
find */admin_lp/c_edit.html -print | xargs grep -l '\["width"\] = "110";'

4.置換する(バックアップが作成されるので安心)
find */admin_lp/c_edit.html -print | xargs grep -l '\["width"\] = "110";' | xargs sed -i_20110531_1221 's/\["width"\] = "110";/\["width"\] = "165";/g'

//----findを使わない場合は、フルパスでかかないとダメ!
//対象を確認する。
grep href=\"/contact/\" /home/usr/*/*/*.html

//パスを確認
grep -l href=\"/contact/\" /home/usr/*/*/*.html

//置換する
grep -l href=\"/contact/\" /home/usr/*/*/*.html | xargs sed -i_20110801_1652 's/href=\"\/contact\/\"/href=\"\/consultation\/\"/g'
//----