다음 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