免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 6621 | 回复: 11
打印 上一主题 下一主题

怎么样对文本进行指定行的数据提取操作? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-10-10 19:47 |只看该作者 |倒序浏览
大家好,有个问题请教下,我有个文本文件test.txt,里面有类似
aa
ccv
bb
cc
dd
df
123
243
……
等等一万多行的数据,现在我有另一个文本文件batch.txt里面有指定的行
2
5
6
12
18
……
这样的,现在的问题是,要求根据batch.txt里面的指定的行在test.txt里面批量提取数据。比如说batch.txt第一个2是对test.txt的第二行的ccv提取出来。5是提取dd,6是提取df,这样保存在另一个新文件b.txt下,就是类似
ccv
dd
df
……
不知道如何做到?谢谢大家

论坛徽章:
0
2 [报告]
发表于 2011-10-10 19:53 |只看该作者
本帖最后由 where27 于 2011-10-10 20:09 编辑

回复 1# njuytwc
这个要求batch.txt里的数字是从小到大排列的。
  1. awk 'NR==FNR{a[$1];next}(FNR in a){print $0;delete a[FNR]}' batch.txt test.txt >b.txt
复制代码
如果batch.txt里的数字是无序的话用这个
  1. awk 'NR==FNR{a[FNR]=$0;next}($0 in a){print a[$0]}' test.txt batch.txt >b.txt
复制代码

论坛徽章:
0
3 [报告]
发表于 2011-10-10 20:09 |只看该作者
回复 2# where27
不行,只输出一行而已。顺便说一下那个test.txt是没有行的数字的,只有内容。

论坛徽章:
0
4 [报告]
发表于 2011-10-10 20:12 |只看该作者
回复 2# where27
我运行了你的脚本,只得到最后一行的结果。也就一行而已,不知道哪里有问题

论坛徽章:
0
5 [报告]
发表于 2011-10-10 20:12 |只看该作者
回复 3# njuytwc


    不会吧,我这里没问题,你试试第二个

论坛徽章:
0
6 [报告]
发表于 2011-10-10 20:15 |只看该作者
回复 5# where27


    不论哪一个,都是只得到一行的数据,哪里出问题啦?我是redhat的

论坛徽章:
0
7 [报告]
发表于 2011-10-10 20:19 |只看该作者
本帖最后由 where27 于 2011-10-10 20:21 编辑

回复 6# njuytwc
  1. [test]$ more test.txt
  2. aa
  3. ccv
  4. bb
  5. cc
  6. dd
  7. df
  8. 123
  9. 243
  10. [test]$ more batch.txt
  11. 2
  12. 5
  13. 6
  14. 8
  15. [test]$ awk 'NR==FNR{a[FNR]=$0;next}($0 in a){print a[$0]}' test.txt batch.txt >b.txt
  16. [test]$ more b.txt
  17. ccv
  18. dd
  19. df
  20. 243
复制代码
简单试了下,没问题啊
你的文件batch.txt里的数字是从小到大排列的吗,有没有重复的数字

论坛徽章:
0
8 [报告]
发表于 2011-10-10 20:22 |只看该作者
回复 7# where27
为何我运行的跟你不一样?奇怪?

[wc@wjj3 ~]$ more test.txt
aa
ccv
bb
cc
dd
df
123
243
[wc@wjj3 ~]$ more batch.txt
2
5
6
[wc@wjj3 ~]$ awk 'NR==FNR{a[FNR]=$0;next}($0 in a){print a[$0]}' test.txt batch.txt >b.txt
[wc@wjj3 ~]$ more b.txt
df
[wc@wjj3 ~]$

论坛徽章:
0
9 [报告]
发表于 2011-10-10 20:30 |只看该作者
奇怪。。你的awk版本是什么,文本格式是不是有问题,dos2unix test.txt batch.txt一下试试,脚本应该是没问题的

论坛徽章:
0
10 [报告]
发表于 2011-10-10 20:38 |只看该作者
回复 9# where27


  呵呵,搞定了,的确是没转换的原因引起滴。不过我平时基本上不需要转换的。不管怎么说,谢谢你啦。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP