다양한 대형 로그 파일의 일부 항목을 검사하는 해킹 스크립트가 있습니다. perl과 bash가 혼합되어 있습니다. 제대로 작동합니다. 스크립트는 필요한 부분을 얻습니다. . 유일한 문제는 "$ chdk_subscription"형식입니다. 키워드로 출력을 구분하려고했습니다. 'STATS'및 'added'. 이 두 단어는 각 줄의 시작과 끝에 있으며 읽고 싶습니다. 'IFS'에 의해 "$의 chdk_subscription"를 끊기bash에서 에코 출력 포맷하기
#!/bin/bash
pid_foo_process=$(pgrep foo_process)
check_primary=$(grep $1 /data/foo_process-0210.$pid_foo_process.log | perl -nle 'print /(primary book \w+:\w+)/ ')
check_primary_symbol=$(grep $1 /data/foo_process-0210.$pid_foo_process.log | perl -nle 'print /primary book (\w+:\w+)/ ')
chdk_subscription=$(grep $1 /data/foo_process-0210.$pid_foo_process.log | perl -nle 'print if /(subscription for \w+:\w+.*)/ ')
echo $check_primary
echo $check_primary_symbol
IFS="STAT"
while read line
echo $line
done < echo $chdk_subscription
는 AWK가 작동하지 않는 사용
echo $chdk_subscription| awk -F"STATS" '{print $0}'
작동하지 않는 것 중 하나 -가없는 줄 바꿈과 하나 개의 큰 라인으로 나올 때마다.
STATS 10/15 08:03:09.391048 32978 (0)SB: subscription for APA:T added STATS 10/15 08:03:09.391164 32978 (0)SB: subscription for APA:P added STATS 10/15 08:03:09.391226 32978 (0)SB: subscription for APA:Z added STATS 10/15 08:03:09.391537 32978 (0)SB: subscription for APA:n added STATS 10/15 08:03:09.391599 32978 (0)SB: subscription for APA:A added STATS 10/15 08:03:09.391686 32978 (0)SB: subscription for APA:a added STATS 10/15 08:03:09.391756 32978 (0)SB: subscription for APA:K added STATS 10/15 08:03:09.391818 32978 (0)SB: subscription for APA:J added STATS 10/15 09:38:12.826928 32978 (0)SB: subscription for APA:N, XNYSAPA:3 added
나는 이것을 읽을 수있는 뭔가를 원한다.
STATS 10/15 08:03:09.391048 32978 (0)SB: subscription for APA:T added
STATS 10/15 08:03:09.391164 32978 (0)SB: subscription for APA:P added
STATS 10/15 08:03:09.391226 32978 (0)SB: subscription for APA:Z added
STATS 10/15 08:03:09.391537 32978 (0)SB: subscription for APA:n added
STATS 10/15 08:03:09.391599 32978 (0)SB: subscription for APA:A added
STATS 10/15 08:03:09.391686 32978 (0)SB: subscription for APA:a added
STATS 10/15 08:03:09.391756 32978 (0)SB: subscription for APA:K added
STATS 10/15 08:03:09.391818 32978 (0)SB: subscription for APA:J added
STATS 10/15 09:38:12.826928 32978 (0)SB: subscription for APA:N, XNYSAPA:3 added
이미 제시된 예상 출력에 해당하는 필터링 전에 어떻게 보이는지 예를 들려 주시겠습니까? – Rein
나는 당신이하려고하는 것에 대한 세부적인 것을 드러내지는 않지만 중요한 한 가지 : 견적! 'echo $ line' ** ** echo와 동일하지 않습니다 $ line "'; 전자는 개행 문자를 공백 문자로 바꾸고, glob 표현식을 확장하고, 거의 확실하게 원하지 않는 형식으로 다른 종류의 혼란을 일으킬 것입니다. –
또한,'\ n '이 두 문자에서 단일 개행으로 바뀐 것처럼 역 슬래시 이스케이프 시퀀스를 구문 분석하지 않으려면'read -r'을 사용하고'read'를 사용하지 마십시오. –