次の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 のデフォルトの動作を無効にします。-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