주문하다:
LC_ALL=C fgrep -f /root/inputfile.txt *.txt > outputfile.txt
입력 파일에는 이러한 내용이 포함되어 있습니다.
-name1:
-name2:
-othername:
*.txt
(여러 파일) 다음과 같은 항목이 포함되어 있습니다.
-name:email@email:d-o-b::alias
입력 파일에서 작은 이름 목록을 가져오면 일부는 있고 *.txt
일부는 없습니다. 다른 오류 결과가 나타납니다.
000_na_name_000:493982:[email protected]:2000-01-05:XX:X:123.123:alias
입력에는 이러한 잘못된 결과를 초래하는 것이 전혀 없으며 그러한 결과가 많이 있습니다.
답변1
에 관한 질문의 예를 보면 fgrep
.
잘못된 점은 grep이 outputfile.txt
이전에 존재했다면 버퍼 크기와 입력 크기에 따라 자체 출력을 다시 검색할 수 있다는 것입니다. 일치 시점에는 존재하지 않기 때문에 이전 outputfile.txt
에 존재하지 않았다면 일치하지 않는 것 같습니다.*.txt
문제의 원인은 아닌 것 같지만 outputfile.txt
다른 곳에 저장하면 어떤 일이 발생하는지 테스트해 볼 가치가 있습니다.
그렇지 않다면 무엇을 할 수 있습니까?
댓글에서 inputfile.txt
문제의 원인에 대한 예를 보여 주셨습니다.
*.txt
동일한 파일과 함께 사용할 때 해당 파일에 있는 하나 이상의 줄로 인해 문제가 발생한다고 생각합니다 .
문제가 있는 행을 찾으려면 다음을 수행할 수 있습니다.이진 검색선의 경우: 선의 절반을 제거하고 작동하는지 시도해 보세요. 문제가 해결되면 삭제된 행을 계속 사용하고, 그렇지 않으면 나머지 행을 사용하세요. 이제 하나 또는 몇 개의 행만 남을 때까지 이 작업을 반복합니다. 이때 이미 이유를 알 수 있을 것입니다.