텍스트 변환을 위한 쉘 스크립트가 있지만 사용하기가 번거롭고 수동 판단과 실행에 의존합니다. 작동 방식은 다음과 같습니다.
1단계: 원시 데이터 텍스트를 다운로드합니다.
wget http://example.com/raw.txt
2단계: 마지막으로 다운로드한 파일의 내용을 수동으로 비교하여 차이점을 확인합니다.
텍스트의 내용 형식은 한 줄과 한 문자열로 비교적 간단합니다. 내용이 늘어나면 스크립트 처리를 실행해야 합니다.
# Last downloaded file content:
wtKpjv
uJlQm1
iS86aE
Hk6ycS
hAYj7k
# Now downloaded file content:
wtKpjv
uJlQm1
RiU8iM
iS86aE
Hk6ycS
qyDNaZ
hAYj7k
# Compare the increased content:
RiU8iM
qyDNaZ
3단계: 비교 결과에 차이가 있는 경우 스크립트 처리를 실행해야 합니다.
./text_processing.sh raw.txt > new.text
위의 내용은 현재 단계입니다. 이 프로세스를 완료하기 위해 자동화된 작업을 어떻게 설정합니까?
매일 확인하고 싶어요. 텍스트 내용이 업데이트되면 즉시 스크립트를 실행해야 합니다. 변경 사항이 없으면 스크립트는 3일마다 실행됩니다.
누구든지 나를 도울 수 있다면 매우 감사하겠습니다.
답변1
귀하의 질문은 귀하가 요구하는 내용에 대해 약간 모호합니다.
차이점만 확인하려면 cmp -s oldfile newfile
파일이 동일하면 .will을 사용하여 true 상태로 종료합니다.
if cmp -s oldfile newfile
then echo files are the same
else echo files are different
./text_processing.sh ...
fi
파일 크기가 증가하는지 확인하려면 wc -c
(문자 수용), wc -l
(줄 수용)을 사용하거나 stat --format=%s
파일에 대한 메타데이터를 직접 사용하여 총 크기를 바이트 단위로 제공할 수 있습니다.
if [ $(wc -c oldfile) -lt $(wc -c newfile) ]
then echo oldfile is smaller
./text_processing.sh ...
fi
$( ... )
함께 제공되는 명령을 실행하고 출력을 명령줄로 바꿉니다. [ ... -lt ... ]
첫 번째 인수가 다음과 같은지 테스트합니다.나에이스비교하다두 번째 주장.
행이 추가되었는지 구체적으로 확인하려는 경우 가장 좋은 전략은 두 파일을 먼저 정렬한 다음 다음을 comm
사용하여 공통 행을 필터링하는 것입니다.
sort -o oldfile.sorted oldfile
sort -o newfile.sorted newfile
if [ $(comm -13 oldfile.sorted newfile.sorted | wc -l) -gt 0 ]
then echo 'line(s) only found in newfile'
./text_processing.sh ...
fi
comm -13
두 파일의 행을 일치시킵니다. 일반적으로 각 줄은 해당 줄이 첫 번째 파일에만 나타나는지, 두 번째 파일에만 나타나는지, 아니면 둘 다에 나타나는지를 나타내기 위해 들여쓰기와 함께 출력됩니다. 첫 번째 파일의 행과 공통 행만 억제 되므로 -13
두 번째 파일에 나타나는 행만 출력됩니다. wc -l
행 수를 계산하고 0보다 큰 테스트를 수행하도록 파이프됩니다 .
변경된 줄은 첫 번째 파일에서만 한 줄로 표시되고 두 번째 파일에서는 다른 줄로 표시됩니다.