ファイル内の大文字と小文字を無視し、検索文字列の行コメントを解除します。

ファイル内の大文字と小文字を無視し、検索文字列の行コメントを解除します。

私のcronファイルエントリは次のとおりです。

#Ansible: test2
*/15 * * * * ansible-playbook  /web/playbooks/automation/detect401MORTEN/va_action.yml | tee -a /web/playbooks/automation/detect401MORTEN/cron.out

# #Cron to auto restart MIMSJASPER tomcat server for all environments if it is down

#Ansible: test3
# */15 * * * * ansible-playbook  /web/playbooks/automation/detect401MORTEN/va_action.yml | tee -a /web/playbooks/automation/detect401MORTEN/cron.out

以下のsedは大文字と小文字を区別せずに機能しません。

sed '/^#.*morten/s/^#//ig' wladmin.cron

希望の出力:

#Ansible: test2
*/15 * * * * ansible-playbook  /web/playbooks/automation/detect401MORTEN/va_action.yml | tee -a /web/playbooks/automation/detect401MORTEN/cron.out

 #Cron to auto restart MIMSJASPER tomcat server for all environments if it is down

#Ansible: test3
 */15 * * * * ansible-playbook  /web/playbooks/automation/detect401MORTEN/va_action.yml | tee -a /web/playbooks/automation/detect401MORTEN/cron.out

何か提案してもらえますか?

答え1

置換コマンドではなくアドレス選択で大文字と小文字を区別しないでください。 sedのGNU実装がある場合は、I次のようにアドレス正規表現に大文字修飾子を適用できます。

sed '/^#.*morten/Is/^#//' wladmin.cron

交換フラグgは必要ありません。実際、アンカーパターンインスタンスは1つしかありません(例:)^#

よりGNU sed マニュアル: 4.3 テキスト一致で行を選択

関連情報