
나는 그 달의 일일 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*.csv
ptrns_list infiles*.csv