自己紹介
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ってここだけ見ると似てますね。
-------------------------------- --------------------------------
今後の方向性。
①各行毎に置換前、置換後を表示したい。
②色付けたいよね。色。
たぶん
自作コマンド的な何かを作れそう。
-------------------------------- --------------------------------
問題
先読み、後読みによる置換では不具合が起きる。
この構文のままでは先読み、後読み指定した文字列が、
一致文字列に入らないので無意味。
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿