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