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

--------クローンタブ------------------ - ------------------------ ------------------------

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 のデフォルトの動作を無効にします。
  • -esedにスクリプトを指定し、
  • /match/,$ファイルの終わり($)までの「一致」正規表現(たとえば、grep)に一致する最初の行を表すアドレス(行)範囲の選択。
  • p現在行を印刷する印刷コマンドです。

詳しくは元の回答をご覧ください。https://stackoverflow.com/questions/7103531/how-to-get-the-part-of-file-after-the-line-that-matches-grep-expression-first

関連情報