【发布时间】:2017-06-18 15:51:16
【问题描述】:
范围的文件,例如(1 - 4 和 6 - 9 之间的数字):
BlackList_B_Number.dat
1 4
6 9
这是输入文件。例如:
OCS_VOICECALLS_1111_11_111111
111111111 1 201605240042070000000236OCS4252 3.6344
111111111 2 201605240114430000000123OCS1154 03.0537
111111111 3 201605240246070000000009OCS0707 018.6965
111111111 4 201605240530500000000213OCS0130 01.8881
111111111 5 201605240601120000000015OCS0156 015.8059
111111111 6 201605240649100000000052OCS0269 02.3725
我有兴趣从与黑名单输入文件相关的输入文件中过滤 $2。我想得到这两个输出:
Output1(过滤器外的输入记录):
111111111 5 201605240601120000000015OCS0156 015.8059
输出2(过滤器内的输入记录):
111111111 1 201605240042070000000236OCS4252 3.6344
111111111 2 201605240114430000000123OCS1154 03.0537
111111111 3 201605240246070000000009OCS0707 018.6965
111111111 4 201605240530500000000213OCS0130 01.8881
111111111 6 201605240649100000000052OCS0269 02.3725
我尝试了很多选项,但我只得到其中一个选项,而不是两个输出,只有其中一个:
awk '
FNR==NR{low[NR]=$1+0;hi[NR]=$2+0;next}
{for(i in low)if($2>=low[i]&&$2<=hi[i]){print $0}}
' BlackList_B_Number.dat OCS_VOICECALLS_1111_11_111111
111111111 1 201605240042070000000236OCS4252 3.6344 1.5570 2.0773 0 000000 0 0JAVIE
111111111 2 201605240114430000000123OCS1154 03.0537 1.8992 1.1545 0 000000 0 0PPIB7
111111111 3 201605240246070000000009OCS0707 018.6965 18.4730 0.2235 0 000000 0 0PPXS8
111111111 4 201605240530500000000213OCS0130 01.8881 0.0000 1.8881 0 000000 0 0PPIB5
111111111 6 201605240649100000000052OCS0269 02.3725 1.7978 0.5746 0 000000 0 0PPIB7
我怎样才能同时得到另一个??:
111111111 5 201605240601120000000015OCS0156 015.8059
提前致谢!!!
【问题讨论】:
-
您必须缩进应该逐字打印的文本。否则所有空格都会被挤压,换行符会消失。
-
另一个问题...您将如何调整或将以前的脚本切换到“program.awk”以便作为 awk -f program.awk 执行?非常感谢。