У меня есть приведенный ниже cmd в extract.sh
.
Он работает, когда выполняется в терминале для поиска «ABC123» в orig.txt
и выводится на result.txt
оставшееся содержимое после обнаружения «ABC123».
К сожалению, когда я запускаю скрипт через cron / crontab, он, похоже, игнорирует / пропускает команду «больше» и просто выводит orig.txt в result.txt.
Любая помощь приветствуется.
——————— ————————– extract.sh —————
#!/bin/bash PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin . $HOME/.profile more +/"ABC123" orig.txt > result.txt
———————- кронтаб ————————— —————-
SHELL=/bin/bash PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin * * * * * /root/extractpdf_v3.sh * * * * * /bin/bash /root/extract.sh
Вы можете использовать sed
а не more
, поскольку вы отмечаете, что в комментарии вы нуждаетесь в содержимом файла после строки, соответствующей определенному слову. Например, входной файл:
Test before Test match Test after
команда:
sed -n -e '/match/,$p'
вывод:
Test match Test after
-n
отключает поведение по умолчанию sed печати каждой строки после выполнения его скрипта на нем, -e
указал скрипт sed, /match/,$
– это выбор диапазона адресов (строк), означающий первую строку, соответствующую регулярному выражению «match» (например, grep) до конца файла ($) p
– команда печати, которая печатает текущую строку. Для получения более подробной информации исходный ответ https://stackoverflow.com/questions/7103531/how-to-get-the-part-of-file-after-the-line-that-matches-grep-expression-first