SED コマンドは、パターンに一致する行を除くすべての行をコメントアウトします。

SED コマンドは、パターンに一致する行を除くすべての行をコメントアウトします。

cron.txt次のファイルがあります

58 18 * * 1-5 /usr/home/script.sh REP CXC BS TODAY all 1>/dev/null 2>/dev/null
00 19 * * 1-5 /usr/home/script.sh DSC DXC BUS TODAY all 1>/dev/null 2>/dev/null
01 19 * * 1-5 /usr/home/script.sh REP HP SNT TODAY all 1>/dev/null 2>/dev/null
03 19 * * 1-5 /usr/home/script.sh DSC CXC SNT TODAY all 1>/dev/null 2>/dev/null
32 10 * * 1-5 /usr/home/script.sh Check CXC OD TODAY MGLA 1>/dev/null 2>/dev/null
32 12 * * 1-5 /usr/home/script.sh Sca CXC OD TODAY all "01 03 05 07 08 10 12 17 18 19 31 32 33 37 42 50 53 55 57 84 89 93" 1>/dev/null 2>/dev/null
01 19 * * 1-5 /usr/home/script.sh REP HK SNT TODAY all 1>/dev/null 2>/dev/null
01 19 * * 1-5 /usr/home/script.sh REP RAM SNT TODAY all 1>/dev/null 2>/dev/null
01 19 * * 1-5 /usr/home/script.sh REP SAB SNT TODAY all 1>/dev/null 2>/dev/null

#パターンがないか、パターンがないすべての行の先頭にコメントを追加するCXC必要HPがあります。

頑張った

grep -iwvE "CXC|HP" cron.txt | sed 's/^/#/g' > cron.txt_bkp

期待どおりに動作しません。

ベストアンサー1

実装がフラグをgrepサポートしていると仮定すると、パイプラインはまたはを含まない行のみを抽出してコメントアウトします。保持しようとした行は新しいファイルに転送されません。-w-EgrepsedHPCXC


~からHP-UXsed|正規表現の変更はサポートされていないようです。つまり/CXC|HP/!s/^/# /、動作しません。ファイルに次の内容を適用できます。

sed -e '/CXC/b' -e '/HP/b' -e 's/^/# /' crontab.txt >crontab-new.txt

現在の行でパターンが見つかると、bコマンドは編集スクリプトの最後に分岐します。sedここでは、「行を印刷して次の行に進む」コマンドとして機能します。

最初の2つの式のいずれも実行されない場合、その行は最後の式によってコメントアウトされます。

上記で生成されたファイルには、crontab-new.txt質問の例に関する次の内容が含まれています。

58 18 * * 1-5 /usr/home/script.sh REP CXC BS TODAY all 1>/dev/null 2>/dev/null
# 00 19 * * 1-5 /usr/home/script.sh DSC DXC BUS TODAY all 1>/dev/null 2>/dev/null
01 19 * * 1-5 /usr/home/script.sh REP HP SNT TODAY all 1>/dev/null 2>/dev/null
03 19 * * 1-5 /usr/home/script.sh DSC CXC SNT TODAY all 1>/dev/null 2>/dev/null
32 10 * * 1-5 /usr/home/script.sh Check CXC OD TODAY MGLA 1>/dev/null 2>/dev/null
32 12 * * 1-5 /usr/home/script.sh Sca CXC OD TODAY all "01 03 05 07 08 10 12 17 18 19 31 32 33 37 42 50 53 55 57 84 89 93" 1>/dev/null 2>/dev/null
# 01 19 * * 1-5 /usr/home/script.sh REP HK SNT TODAY all 1>/dev/null 2>/dev/null
# 01 19 * * 1-5 /usr/home/script.sh REP RAM SNT TODAY all 1>/dev/null 2>/dev/null
# 01 19 * * 1-5 /usr/home/script.sh REP SAB SNT TODAY all 1>/dev/null 2>/dev/null

おすすめ記事