패턴과 일치하는 행을 표시하기 위해 다음 명령을 실행하고 있습니다.
./files/ -name "*.txt" -print0 xargs -0 grep "5|20150507" 찾기
출력은 다음과 같습니다
./files/N1.942_0000.txt:78787878|13|5|20150507221152 ./files/N1.942_0000.txt:78787878|13|5|20150507221156 ./files/N1.943_0002.txt:1 22121 2 |13|5 | 20150507222004./files/N1.810_0000.txt:8892716618|13|5|20150507215150./files/N1.442_0001.txt:8648648648|13|5|20150507221636./file s/N1 .442_0001.txt:8648648648|13 |5 |20150507221638 ./files/N1.442_0001.txt:7406079160|13|5|20150507221941
하지만 아래와 같이 파일 이름 없이 출력을 원합니다.
86486 48648|13|5|20150507221636
8648648648 |13|5|
20150507221638 7406079160 | 20150507221941
답변1
grep
명령에는 -r
옵션이 있습니다
디렉토리에서 텍스트를 재귀적으로 검색합니다.
아래 예:
grep -r "5|20150507" ./ | awk -F ':' {'print $2'}
답변2
"-h" 옵션과 함께 grep을 사용하십시오.
-h, --no-filename
Suppress the prefixing of file names on output. This is
the default when there is only one file (or only standard input) to
search.
./files/ -name "*.txt" -print0 | xargs -0 grep -h "5|20150507" 찾기
답변3
find ./files/ -name "*.txt" -print0 | xargs -0 grep "5|20150507" | awk 'BEGIN{FS=":"} {print $2}'
특수 문자일 수 있으므로 구분 기호 "FS="를 사용해야 할 수도 있습니다.