아래와 같이 폴더에 여러 파일(텍스트 파일)이 있습니다. 여기서 첫 번째 파일에는 일부 경로가 문자열로 포함되어 있고 다른 파일에는 경로+파일 이름이 포함되어 있습니다.
파일 1:
[root@centos7 test]# pwd
/root/test
[root@centos7 test]# cat file1.txt
/abc/bce/12345/input/part3
/abc/bce/12345/input/part3/err
/abc/bce/34563/input
/abc/bce/34563/input/part1
/abc/bce/34563/input/part3/wrk
/abc/bce/11198/input/VII
/abc/bce/11198/input/VII/err
/abc/bce/11198/input/VII/part3
/abc/bce/11198/input/VII/part3/err
[root@centos7 test]#
파일 2:
[root@centos7 test]# pwd
/root/test/test
[root@centos7 test]# cat file2.txt
/abc/bce/12345/input/part3/AIR9905.txt--20210421--
/abc/bce/12345/input/part3/AIR9923.txt--20210315--
/abc/bce/12345/input/part3/err/AIR9950.txt--20200512--
[root@centos7 test]#
파일 3:
[root@centos7 test]# pwd
/root/test/test
[root@centos7 test]# cat file3.txt
/abc/bce/12345/input/part3/err/AIR1034.txt--20210110--
/abc/bce/34563/input/part1/AIR3426.txt--20200420--
/abc/bce/11198/input/VII/part3/err/V.AIR7650.txt--20170625--
[root@centos7 test]#
현재 출력:
test/file2.txt:/abc/bce/12345/input/part3/AIR9905.txt--20210421--
test/file2.txt:/abc/bce/12345/input/part3/AIR9923.txt--20210315--
test/file2.txt:/abc/bce/12345/input/part3/err/AIR9950.txt--20200512--
test/file3.txt:/abc/bce/12345/input/part3/err/AIR1034.txt--20210110--
예상 출력:
test/file2.txt:/abc/bce/12345/input/part3/AIR9905.txt--20210421--
test/file2.txt:/abc/bce/12345/input/part3/AIR9923.txt--20210315--
나는 grep -rHw "/abc/bce/12345/input/part3" test/
file1의 행을 일치시키고 file2, file3 등에서 해당 정보를 추출하는 데 사용합니다. 그러나 문제는 행을 검색하려고 할 때 file2, file3 등에서 유사한 행을 모두 가져오는 것입니다. file1을 여러 파일과 연속적으로 비교할 때 이 작업을 수행하는 방법을 모르겠습니다.
답변1
file2.txt
귀하의 질문을 올바르게 해석하면 귀하의 예에서 행을 찾고 싶고 file3.txt
(a) 문자열 "/abc/bce/12345/input/part3" + 추가된 문자열(파일 이름)을 포함하지만(b)아니요다른 "/abc/bce/12345/input/part3/ 포함잘" 문자열. 내가 아는 한, 당신이 원하는 것은 적어도 grep
단일 명령으로는 불가능합니다.
그 이유는 당신이 동시에하다grep
검색어를 기반으로 더 긴 문자열을 찾으려는 경우 (예: "/abc/bce/12345/input/part3"은 "test/file2.txt:/abc/bce/12345/input/part3/AIR9905.txt--"와 일치함) 20210421--") 및아니요grep
검색어를 기반으로 더 긴 문자열을 찾으려는 경우(예: "/abc/bce/12345/input/part3"은 "test/file2.txt:/abc/bce/12345/input/part3/"와 일치함 )잘/AIR9950.txt--20200512---").
귀하가 제시한 특정 예에서는 이렇게 할 수 있지만 grep -rHw "/abc/bce/12345/input/part3" test/ | grep -v "/err"
분명히 모든 경우에 작동하는 보편적인 솔루션은 아닙니다.