- 论坛徽章:
- 0
|
本帖最后由 x-dongzi 于 2011-10-11 15:45 编辑
我有两个文件,第一个是记录错误的文件,我需要把在第一个文件里面记录了错误的部分在第二个文件中删除,由于这两个文件不是能按照列来分开的,所以我直接用的是$0来表示。
代码如下,执行的时候使用的MSYS和cygwin环境下的gawk -f script.txt cuowu.txt quanbu.txt,结果发现并没有在quanbu文件中把cuowu的给剔除,实在是百思不得其解,因此发上来,让大家帮忙给看看。
看2楼3楼的指导,我是想先建立一个数组a,然后遍历数组a,将a中的元素与quanbu.txt文件中的每行匹配,看是不是可以,如果能匹配成功就不打印这一行。
这样$0~/j/写法有问题吗?- NR==FNR{a[$0]=$0}
- NR>FNR{
- printflag=1
- for (j in a)
- {
- if ($0~/j/)
- {printflag=0;}
- }
- if (printflag==1)
- {print $0}
- }
复制代码 cuowu.txt- 1aaaaaaaaa
- 2bbbbbbb
- 3ccccccccc
- 4eeeeeeeeee
- 5fffffffff
复制代码 quanbu.txt- 1aaaaaaaaaaaaaaaaaaaaaaaaaaaa
- 2bbbbbbbbbbbbbbbbbbbbbbbbbb
- 4ddddddddddddddddddd
- 3cccccccccccccccccccccc
- 4eeeeeeeeeeeeeeeeeeee
- 5ffffffffffffffffffff
- aaaaaaaaaaaaaaaaaaaaaaaaaaaa
- hasdlfjasdf
- asdof8uewqor
- asdfasdf
- qwer1234234r
- zxxfsadfqwe
- dsafr23412
- dasfwqrqwrqw
- zxcvfqwrqwfrasfzvzfwarqwefasf
- weqrqwerqwerfwerqwerf
- asdfqwerweafasdfasdfasdf
- erwqeqwr2135opfy907fuwqe
- 3r2p184790udjfvlbnkvchnl
- sopfd7219437dncl,zn ,nkl hd
- dsfo872134dsidphaslvn. v
- dfqwp7oryodafak
- 354ef654126r31 fdasrwefsda231
- sdaf0897231904,jcxzv ,zxjhihdsfc
- 23re2wq65v4f1zsx.gf1asd
- dpouapr9u.mzx.cv /awf
- dsaliufop72nczxln ,asdjdf
复制代码 |
|