Bash 스크립트: 두 개의 텍스트 파일 비교

Bash 스크립트: 두 개의 텍스트 파일 비교

어떻게 하면 효율적으로 할 수 있을지 궁금합니다. a.txt와 b.txt라는 두 개의 파일이 주어지면 다음을 수행하는 bash 스크립트를 작성하고 싶습니다.

b.txt에 존재하지 않는 '*'를 포함하는 a.txt의 모든 줄은 타임스탬프와 함께 b.txt 끝에 추가됩니다.

첫 번째 부분과 마지막 부분은 할 수 있지만 grep "*" a.txt echo "$(date)" >> b.txt 나머지 부분은 어떤지 모르겠습니다.

답변1

b.txt 파일을 엉망으로 만들지 않도록 결과를 위해 세 번째 파일을 사용하는 것이 좋습니다. 다음을 시도해 볼 수 있습니다.

cp b.txt c.txt 
for line in $(grep '*' a.txt); do
    # for each line found in a.txt
    echo "Found: $line"
    grep -q $line b.txt   # check its presence in b.txt
    if [ $? -ne 0 ]; then
        # if the result of the grep is not equal to 0
        # it means that the line has not been found in b.txt
        # then print the line in a third file with the leading timestamp
        echo "$(date): $line" >> c.txt
    fi
done

'*'를 검색하는 행이 구성되어 있는지 모르기 때문에 grep을 개선해야 할 수도 있다는 것이 분명합니다.

관련 정보