grep은 패턴에 대한 패턴 목록이 포함된 파일을 검색하여 각 패턴에 대한 결과를 개별 파일에 기록합니다.

grep은 패턴에 대한 패턴 목록이 포함된 파일을 검색하여 각 패턴에 대한 결과를 개별 파일에 기록합니다.

나는 그 달의 일일 CD를 담은 디렉토리를 가지고 있습니다. 모든 CD에서 ph 값 목록을 검색하고 그 결과를 모드별로 별도의 파일에 써야 합니다.

현재 저는 월별 CD가 포함된 디렉터리의 각 ph 값에 대해 다음 명령을 수동으로 사용하고 있으며 각 숫자에 대한 결과를 단일 파일에 쓰고 있습니다.

grep -rn 111222333 /dir-containing-new-indivdual-logs/111222333.csv

검색 목록을 지정하기 위해 옵션을 추가해 보았지만 grep -f전체 명령의 구문이 잘못되어 성공하지 못했습니다.

답변1

grep을 계속 사용하려면 이 루프를 고려하세요.

nums=/path/to/the/file_with_numbers_one_per_line
wdir=/path/to/dir/where/records2searchIn/located
rdir=/path/to/dir/to/put/results

for anum in $(cat ${nums}); do
 grep -nr "${anum}" ${wdir} > ${rdir}/result_file_for_${anum}; 
done

목록의 각 숫자를 grep하고 단일 결과를 저장합니다.

답변2

이를 위해 사용됩니다 awk.

awk 'NR==FNR{ptrns[$0]++;next} 
    FILENAME!="ptrns_list"{for(x in ptrns) if($0 ~ x) print $0>x}' ptrns_list infiles*.csv

먼저 모든 패턴을 배열로 읽어옵니다.포인터 목록문서. 그런 다음 각 .csv 파일에 대해 이러한 패턴 중 하나가 전체 줄에 $0표시되면 $0 ~ x해당 줄을 패턴 일치와 동일한 이름을 가진 단일 파일로 인쇄합니다.

실제 검색 패턴 목록 파일을 전달하고 ptrns_list입력 .csv 파일에 사용하면 됩니다.infiles*.csvptrns_list infiles*.csv

관련 정보