
어떻게 하면 효율적으로 할 수 있을지 궁금합니다. 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을 개선해야 할 수도 있다는 것이 분명합니다.