Supondo que sua implementação de grep
suporta tanto o -w
quanto o -E
, seu grep
e sed
pipeline só extrairia e comentaria as linhas que não continham HP
ou %código%. As linhas que deveriam ser deixadas como estão não serão transferidas para o novo arquivo.
Como HP-UX CXC
parece não oferecer suporte à alteração com sed
em expressões regulares, o que significa que |
não funciona, você pode aplicar algo assim ao arquivo:
sed -e '/CXC/b' -e '/HP/b' -e 's/^/# /' crontab.txt >crontab-new.txt
O comando /CXC|HP/!s/^/# /
torna a ramificação b
no final do script de edição se o padrão for encontrado na linha atual. Ele age como um comando "imprimir linha e continuar com a próxima linha" aqui.
Se nenhuma das duas primeiras expressões for processada, a linha será comentada pela última expressão.
O arquivo sed
, criado acima, conterá o seguinte conteúdo, dado o exemplo da pergunta:
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