无法通过 cron/crontab 执行 bash 脚本

无法通过 cron/crontab 执行 bash 脚本

我有以下 cmd extract.sh

它的工作原理是在终端中执行搜索“ABC123”,并在找到“ABC123”后orig.txt输出到剩余内容。result.txt

不幸的是,当我通过 cron/crontab 运行脚本时,它似乎忽略/跳过“more”命令,只将 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

----------------------crontab---------------------------------------- ----------------

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

答案1

您可以使用sed代替more,正如您在评论中提到的那样,您需要在与特定单词匹配的行之后使用文件的内容。例如输入文件:

Test before
Test match
Test after

命令:

sed -n -e '/match/,$p'

输出:

Test match
Test after
  • -n禁用 sed 在执行脚本后打印每一行的默认行为,
  • -e向 sed 指示一个脚本,
  • /match/,$是地址(行)范围选择,表示与“匹配”正则表达式(如 grep)匹配的第一行到文件末尾($)
  • p是打印当前行的打印命令。

欲了解更多详情,请查看原答案https://stackoverflow.com/questions/7103531/how-to-get-the-part-of-file-after-the-line-that-matches-grep-expression-first

相关内容