두 파일을 비교하고 차이점이 있으면 스크립트를 실행합니다.

두 파일을 비교하고 차이점이 있으면 스크립트를 실행합니다.

텍스트 변환을 위한 쉘 스크립트가 있지만 사용하기가 번거롭고 수동 판단과 실행에 의존합니다. 작동 방식은 다음과 같습니다.

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보다 큰 테스트를 수행하도록 파이프됩니다 .

변경된 줄은 첫 번째 파일에서만 한 줄로 표시되고 두 번째 파일에서는 다른 줄로 표시됩니다.

관련 정보