やりたいこと
- 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つめの()を参照する - 後方参照という
-
正規表現、使えると便利ですね(ΦωΦ) 使いこなしたい…