[ruby]ag + rubyで一括置換するワンライナー


[まとめ] 現在開催中のKindleセール情報はこちら

htmlやテンプレート内にメタタグを記述した際に「キーワード1,キーワード2」と,区切りで設定すべきところを、間違って「キーワード1、キーワード2」と、区切りにしてしまった際にagコマンドとrubyを組み合わせて一括置換できないかやってみました。

そしてできたのが以下のワンライナー

ag keywords app/views/ -l | xargs ruby -i -pe 'if $_.match(/keywords: /) then $_.gsub!(/、/, ","); else $_; end'

今回、meta-tagsを使ってキーワード設定をしていたので、agコマンドでapp/views以下の「keywords」を含むファイルを検索して、該当ファイルに対してrubyで1行ずつ読み込み、「keywords: 」に該当する行の場合は、を,に置換するようにしています。

もう少し短く書けるようにしたいです。

参考

[まとめ] 現在開催中のKindleセール情報はこちら