如果b.txt的第一列為a.txt中含有的,則寫入到一個新的文件。


 

a.txt
CM-03-B052
CM-03-B051
CM-03-B053
CM-03-B054
CMSL-A-A-68.5
EP-BLOCK1
EP-BLOCK2


b.txt

CA101003-F001^10^M40G00101^20100612^^24.7^2.0^0.0^0^KG^1.0^1.0^^^0^N^0^N^0^Y^10^Y^Y^100.0^ ^ ^ ^N^CCC40332^20100612^cabmi600^
CA101003-M001^10^M40G00101^20100612^^25.3^2.0^0.0^0^KG^1.0^1.0^^^0^N^0^N^0^Y^10^Y^Y^100.0^ ^ ^ ^N^CCC40332^20100612^cabmi600^
CA100997-S004F^10^M30600101^20100612^^1.4^1.0^0.0^0^KG^1.0^1.0^^^0^N^0^N^0^Y^10^Y^Y^100.0^ ^ ^ ^N^CCC40332^20100612^cabmi600^
CA100948-U010/1^10^M30600101^20100612^^4.4^4.0^0.0^0^KG^1.0^1.0^^^0^N^0^N^0^Y^10^Y^Y^100.0^ ^ ^ ^N^CCC40332^20100612^cabmi600^
CA101004-F001^10^M40G00101^20100612^^11.1^1.0^0.0^0^KG^1.0^1.0^^^0^N^0^N^0^Y^10^Y^Y^100.0^ ^ ^ ^N^CCC40332^20100612^cabmi600^
CA101004-M001^10^M40G00101^20100612^^12.1^1.0^0.0^0^KG^1.0^1.0^^^0^N^0^N^0^Y^10^Y^Y^100.0^ ^ ^ ^N^CCC40332^20100612^cabmi600^
CA101013-F001^10^M40G00101^20100612^^29.6^2.0^0.0^0^KG^1.0^1.0^^^0^N^0^N^0^Y^10^Y^Y^100.0^ ^ ^ ^N^CCC40332^20100612^cabmi600^
CA101013-M001^10^M40G00101^20100612^^27.4^2.0^0.0^0^KG^1.0^1.0^^^0^N^0^N^0^Y^10^Y^Y^100.0^ ^ ^ ^N^CCC40332^20100612^cabmi600^
CA101003-B025^10^M70600204^20100612^^0.6^1.0^0.0^0^KG^1.0^1.0^^^0^N^0^N^0^Y^10^Y^Y^100.0^ ^ ^ ^N^CCC40332^20100612^cabmi600^
CA101003-B072/3^10^M30600101^20100612^^4.9^8.0^0.0^0^KG^1.0^1.0^^^0^N^0^N^0^Y^10^Y^Y^100.0^ ^ ^ ^N^CCC40332^20100612^cab


.
.
.


如何把b.txt裡面第一列為a.txt裡面內容的都過濾出來呢???

也就是如果b.txt的第一列為a.txt中含有的,則寫入到一個新的文件
__________________________________



 

回复 1# cheungjustin


    Top
__________________________________


 

 

没看见B文件里有包含A文件的行阿
__________________________________
天下风云出我辈 皇图霸业谈笑中


 

 

回复 3# bbgg1983


    有的,只是我截取的部分沒有而已。
__________________________________


 

 

  1. while read line;do awk -F^ -v var=$line '$1~var{print $0 >>"./c.txt"}' b.txt;done<a.txt
复制代码
__________________________________
天下风云出我辈 皇图霸业谈笑中


 

 

  1. awk -F^ 'NR==FNR{a[$0]=$0;next}{for(i in a)if($1==a[i])print $0}' a.txt b.txt >"c.txt"
  2. awk -F^ 'NR==FNR{a[$0]=$0;next}{if($1 in a)print $0}'  a.txt b.txt >"c.txt"
复制代码
__________________________________
天下风云出我辈 皇图霸业谈笑中


 

 

回复 6# bbgg1983


    太感謝兄台了,真是幫了個大忙。
__________________________________


 

 

  1. [b]回复 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=12421333&ptid=1733441]7#[/url] [i]cheungjustin[/i] [/b]
  2.     [root@bj_manager test]# awk '{print NR,FNR}' test.txt test2.txt
  3. 1 1
  4. 2 2
  5. 3 3
  6. 4 4
  7. 5 5
  8. 6 6
  9. 7 7
  10. 8 8
  11. 9 9
  12. 10 10
  13. 11 11
  14. 12 1
  15. 13 2
  16. 14 3
  17. 15 4
  18. 16 5
  19. 17 6
  20. 18 7
  21. 19 8
  22. [root@bj_manager test]#
复制代码
__________________________________


 

 

回复 8# cheungjustin


   

对于单个 文件NR 和FNR 的 输出结果一样的 :
# awk '{print NR,$0}' file1
1 a b c d
2 a b d c
3 a c b d
4 a c d b
5 a d c b
6 a d b c

#awk '{print FNR,$0}' file1
1 a b c d
2 a b d c
3 a c b d
4 a c d b
5 a d c b
6 a d b c

但是对于多个文件 :
# awk '{print NR,$0}' file1 file2
1 a b c d
2 a b d c
3 a c b d
4 a c d b
5 a d c b
6 a d b c
7 aa bb cc dd
8 aa bb dd cc
9 aa cc bb dd
10 aa cc dd bb
11 aa dd bb cc
12 aa dd cc bb

# awk '{print FNR,$0}' file1 file2
1 a b c d
2 a b d c
3 a c b d
4 a c d b
5 a d c b
6 a d b c
1 aa bb cc dd
2 aa bb dd cc
3 aa cc bb dd
4 aa cc dd bb
5 aa dd bb cc
6 aa dd cc bb

详细出处参考:http://www.itqun.net/content-detail/77012.html
__________________________________


 

 

回复 6# bbgg1983


    兄弟,小弟實在菜的不行

弱弱的問一下
awk 'NR==FNR{}{}' a.txt b.txt

為什麽滿足NR==FNR就執行第一個{}裡面的內容,而不滿足就執行第二個{}的內容呢?

謝謝!!!
__________________________________
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值