2015年2月9日月曜日

制限あるLinuxコマンドでの置換の仮実行(be limitd dry run)




なんつーか、Linuxコマンドで、
置換の仮実行(dryrun)っぽいのが無くて悲しいので、
なんとなく構造だけ書いてみる。
ちなみに以下のコードはperlがあること前提です。
別にsedでも問題ないです。



find ~ | xargs grep -Po '検索文字列' | cut -d ':' -f 2 | sort | uniq | perl -pe '置換スクリプト'



①「find」で対象ファイルの場所を取得。grepに投げる。

②「grep」で置換したい文字列を検索に掛けます。
 そしてオプション「-o」ファイル名と一致文字列を取得。cutに投げる。

③「cut」のオプション「-d ':'」で「:」で文字列を区切り、
 そしてオプション「-f 2」で区切った文字列の2番目、
 乃ち「一致文字列」だけ取得。sortに投げる。


④「sort」で一致文字列を整列させる。uniqに投げる。

⑤「uniq」で重複文字列を削除する、perlに投げる。

⑥「perl」のオプション「-p」で標準出力させるようにし、
 オプション「-e 'スクリプト'」で書かれたスクリプトを実行。
 -pによって置換された文字列が出力される。されるだけ。


ぶっちゃけ④とか⑤とかいらないけど、何となく。

-------------------------------- --------------------------------

sed使ってやる場合。

find ~ | xargs grep -o '検索文字列' | cut -d ':' -f 2 | sort | uniq | sed -e '置換スクリプト'

perlとsedってここだけ見ると似てますね。

-------------------------------- --------------------------------

今後の方向性。

①各行毎に置換前、置換後を表示したい。
②色付けたいよね。色。

たぶん
自作コマンド的な何かを作れそう。


-------------------------------- --------------------------------


問題

先読み、後読みによる置換では不具合が起きる。
この構文のままでは先読み、後読み指定した文字列が、
一致文字列に入らないので無意味。


0 件のコメント:

コメントを投稿