【发布时间】:2017-06-20 17:49:33
【问题描述】:
我有两个输入文件:
cat 2OCS_VOICECALLS_1111_11_111111
111111111 902123124 201605240534270000000070OCS0144 01.0946 0.3729
111111111 902123125 201605222207410000000070OCS8182 00.8980 0.1
111111111 902123126 201605222319190000000015OCS1573 6.3854 6.11
111111111 902123126 201605230752420000000080OCS1223 00.8002 0.0
111111111 902123123 201605231525320000000073OCS1394 01.2194 0.4
111111111 902123123 201605231708080000000570OCS1040 011.1977 6.3
111111111 350 201605240042070000000236OCS4252 3.6344 1.55
111111111 1 201605240114430000000123OCS1154 03.0537 1.89
111111111 3 201605240246070000000009OCS0707 018.6965 18.4
111111111 423 201605240530500000000213OCS0130 01.8881 0.00
111111111 5 201605240530500000000213OCS0130 01.8881 0.00
111111111 470 201605240601120000000015OCS0156 015.8059 15.5
111111111 600 201605240601120000000015OCS0156 015.8059 15.5
111111111 400 201605240601120000000015OCS0156 015.8059 15.5
另一个文件
cat BlackList_B_Number.dat
902123123 902123125
902123127 902123128
450 600
1 400
我希望匹配超出数字范围并在不同文件的范围内。我试过这个:
awk -v FILE1="FILE1.out" -v FILE2="FILE2.out" 'NR==FNR{for (i=$1; i<=$2; i++) wanted[i] ;next}($2 in wanted){print > FILE1}!($2 in wanted){print > FILE2}' BlackList_B_Number.dat 2OCS_VOICECALLS_1111_11_111111
但我没有得到预期的输出,因为902123124 应该在FILE1 中,而不是在FILE2 中:
cat FILE1.out
111111111 902123123 201605231525320000000073OCS1394 01.2194 0.4
111111111 902123123 201605231708080000000570OCS1040 011.1977 6.3
111111111 350 201605240042070000000236OCS4252 3.6344 1.55
111111111 1 201605240114430000000123OCS1154 03.0537 1.89
111111111 3 201605240246070000000009OCS0707 018.6965 18.4
111111111 5 201605240530500000000213OCS0130 01.8881 0.00
111111111 470 201605240601120000000015OCS0156 015.8059 15.5
111111111 600 201605240601120000000015OCS0156 015.8059 15.5
111111111 400 201605240601120000000015OCS0156 015.8059 15.5
cat FILE2.out
111111111 902123124 201605240534270000000070OCS0144 01.0946 0.3729
111111111 902123125 201605222207410000000070OCS8182 00.8980 0.1
111111111 902123126 201605222319190000000015OCS1573 6.3854 6.11
111111111 902123126 201605230752420000000080OCS1223 00.8002 0.0
111111111 423 201605240530500000000213OCS0130 01.8881 0.00
【问题讨论】:
-
无法在
GNU Awk 4.1.4上重现它,我可以看到902123124出现在FILE1中 -
该脚本不能根据这些输入文件执行您声称的操作。尝试在每个文件上运行
cat -v以查看是否包含任何控制字符。使用您发布的内容再试一次,再看看您的真实数据。