LoginSignup
2
5

More than 5 years have passed since last update.

Git と sed で一括置換

Last updated at Posted at 2016-02-18

やりたいこと

  • Sassファイル中のCompass用の mixinを、普通のプロパティ表記に置き換えたい。
  • +border-radius(6px)border-radius: 6px、または、+border-radius($size)border-radius: $size みたいな置換がしたい
  • つまり、Gitにインデックスされた全Sassファイルから、+border-radius(なんちゃら)border-radius: なんちゃら に置換したい

コマンド

$ git ls-files *.sass|LC_ALL=C xargs sed -E -i '' 's/\+border-radius\((.+)\)/border-radius: \1/g'

しくみ

  • git ls-files *.sass でGitにインデックスされたファイルの中から、なんちゃら.sass の一覧を出す。
  • LC_ALL=C は Mac のsed で sed: RE error: illegal byte sequence が出てつらいのを回避。
  • xargs で | の前のコマンドの結果を1行ずつ評価する。
  • sed -E とすると、拡張正規表現を使って置換できる。
  • -i はファイルを直接置換する。
  • 's/\+border-radius\((.+)\)/border-radius: \1/g'
    • \((.+)\) は ()内に何文字でも自由な文字列が入り、 \1は1つめの()を参照する
    • 後方参照という

正規表現、使えると便利ですね(ΦωΦ) 使いこなしたい…

2
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
5