обновить первый символ строки, если строка содержит две строки - PullRequest
0 голосов
/ 08 января 2020

Я ищу сценарий для поиска строки, если он содержит две строки, а затем для определения, содержит ли первый символ этой строки определенный символ, и удаления его.

Например. если строка содержит две строки, такие как «ab c» и «xyz», она должна искать первый символ строки, а если она содержит #, она должна удалить ее и наоборот.

Она пыталась запустить Команда ниже в crontab и получила результат

crontab -l | grep az2-er32-cxv-iz| grep aze  

Вывод

#5,10 * * * * /opt/apps/scripts/dsm-rync -q -del -s az2-er32-cxv-iz /opt/apps/sdl/scripts/aze-dsm-rync.app.config

, так как трудно непосредственно обновить запись в crontab, я скопировал ее в tmpfile.

crontab -l > tmpfile и попытался запустить sed 's/^#//' tmpfile, но он удаляет все # вместо строки, совпадающей с двумя строками

Ответы [ 2 ]

1 голос
/ 08 января 2020

Вы можете использовать gnu awk, чтобы сделать это легко:

awk -i inplace '/az2-er32-cxv-iz/ && /aze/{sub(/^#/, "")} 1' crontab

Это удалит # из первой позиции, если в строке есть az2-er32-cxv-iz и aze.

0 голосов
/ 08 января 2020

Как уже упоминал Шлойм, я не дам вам сам код, но я дам вам часть псевдокода для начала:

  • Чтобы узнать, содержит ли строка хотя бы два слова, вы можете искать пробел в этой строке. (grep " " <filename>)
  • Чтобы узнать, начинается ли строка с определенного символа, вы можете выполнить поиск символа, за которым следует этот определенный символ. (grep "<beginning_of_line>#")
  • Заменить символ в строке можно с помощью команды sed.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...