Сочетайте хитрые решения со специфическими awk
функциями.
Если шаблон "TOCHANGE"
встречается только один раз в каждой строке. Обычного awk
будет достаточно.
awk '{
if(NF == 2) {
getline OFS < "file_2"
$1 = $1
}
print
}' FS='TOCHANGE' input.txt
Если шаблон "TOCHANGE"
может встречаться много раз в каждой строке. Требуется gawk
.
gawk '{
RS="\n"
if(RT)
getline ORS < "file_2"
else
ORS=""
print
RS="TOCHANGE"
}' RS='TOCHANGE' input.txt
input.txt
a
b TOCHANGE
c
d
e TOCHANGE
f
g TOCHANGE
файл _2
line1
line2
line3
line4
Выход
a
b line1
c
d
e line2
f
g line3
Поскольку вы не можете дать sudo
пароль при использовании его из собственного crontab, и поскольку цель использования sudo
в первую очередь состоит в том, чтобы получить привилегии суперпользователя, запустите вашу команду rsync
из root crontab, а не ваш собственный, кажется лучшим вариантом.
Вы можете редактировать crontab пользователя root, используя
sudo crontab -e
В нем вы можете добавить то же расписание, которое вы указали в своем вопросе, но без команды sudo
.