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
nordat.gz
и сохраните результат в have_usage.txt
usage_biglist.txt
и проделайте то же самое до nth string 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
Я бы использовал 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