zgrep -f /onip/appt/app/yemi/usage_biglist.txt \
/onip/cdr/output/nor/bac/filec/$count/nordat.gz \
>> /onip/appt/app/yemi/have_usage.txt
일반화하다
- 파일의 첫 번째 문자열을 선택하십시오.
usage_biglist.txt
- 파일에서 grep을 수행
nordat.gz
하고 결과를 다음 위치에 저장합니다.have_usage.txt
- 다음 문자열을 선택
usage_biglist.txt
하고 n번째 문자열까지 동일한 작업을 수행합니다.
답변1
grep
(또는 zgrep
귀하의 경우)은 항상 파일에서 일치하는 모든 줄을 출력합니다.
각 패턴 일치를 개별적으로 수행한 다음 결과를 전달할 수 있습니다 head -n 1
.
while read -r pattern; do
zgrep "$pattern" file.gz | head -n 1
done <pattern_list.txt >output_file.txt
귀하의 경우:
while read -r pattern; do
zgrep "$pattern" /onip/cdr/output/nor/bac/filec/$count/nordat.gz | head -n 1
done </onip/appt/app/yemi/usage_biglist.txt >/onip/appt/app/yemi/have_usage.txt
답변2
나는 다음을 사용할 것이다 awk
:
gunzip < "/onip/cdr/output/nor/bac/filec/$count/nordat.gz" |
awk '
!list_processed {strings[$0]; next}
{
do_print = 0
for (s in strings)
if (index($0, s)) {
delete strings[s]
do_print = 1
}
}
do_print
' /onip/appt/app/yemi/usage_biglist.txt list_processed=1 - \
>> /onip/appt/app/yemi/have_usage.txt
답변3
사용
zgrep -m 1 -f
바꾸다
zgrep -f