grep 오류: 잘못된 반복 연산자 피연산자

grep 오류: 잘못된 반복 연산자 피연산자

두 파일을 비교하여 모든 문자열(이 경우 정렬되지는 않았지만 줄은 괜찮음) file1file 2.

몇 가지 조사를 해보니 이 명령으로 이 grep -v -f file1 file2작업을 수행할 수 있을 것 같지만 명령줄에서 이 작업을 시도하면 중복 연산자 피연산자가 잘못되었습니다.라는 오류가 발생합니다.

어떤 도움이라도 대단히 감사하겠습니다. 감사합니다!

답변1

오류 메시지는 하나 이상의 행이 있음을 나타냅니다.파일 1정규식 구문을 존중하지 않습니다. 정규식 대신 문자열을 있는 그대로 찾으려면 -F(고정 문자열) 옵션을 사용해야 합니다.

grep그러나 실제 문제는 짧은 행이 긴 행과 잘못 일치할 수 있기 때문에 목적 에 맞게 사용할 수 없다는 것입니다 . 예를 들어,파일 1줄에 빈 줄이 포함되어 있으면 해당 줄은 일치합니다.모두이동 중파일 2.

더 좋은 방법은 파일을 정렬하고 다음을 사용하는 것입니다 diff.

TmpFile1=$(mktemp)
TmpFile2=$(mktemp)
sort $File1 >$TmpFile1
sort $File2 >$TmpFile2
# Display the lines in $File1 which do not appear in $File2
diff $TmpFile1 $TmpFile2 | grep '^>' | cut -c 3-
# Delete the temporary files
rm $TmpFile1 $TmpFile2

관련 정보