免费注册 查看新帖 |

Chinaunix

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

请教一个2重循环问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-02-10 15:01 |只看该作者 |倒序浏览
本帖最后由 very12345 于 2011-02-10 15:04 编辑

要求是替换现有文本($loadfile )的某几行某几列数据, 具体那几行那几列通过另一个文件的行号寻找(correct.txt的lineno), 问题是怎么输出最终修改结果呢?(nawk应该怎么写呢)

while [[ $j -le $nb]];do
lineno=`tail +$j correct.txt | head -1 | nawk -F"$SEP" '{print $1}'`
acl_p=`tail +$j correct.txt | head -1 | nawk -F"$SEP" '{print $7}'`
acl_pg=`tail +$j correct.txt | head -1 | nawk -F"$SEP" '{print $8}'`

nawk -F"\t" -v lineno=$lineno -v acl_p=$acl_p -v acl_pg=$acl_pg 'BEGIN{OFS=FS} {if(NR==lineno) {$8=acl_p;$9=acl_pg} } END{print $0}' $loadfile > ??
j=$j+1;
done

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
2 [报告]
发表于 2011-02-10 15:19 |只看该作者
看楼主的意思,应该是可以用awk数组来解决的

论坛徽章:
0
3 [报告]
发表于 2011-02-10 15:29 |只看该作者
回复 2# yinyuemi


    不怎么会用,现在遇到的问题就是,每做一次循环,$loadfile会变化。

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
4 [报告]
发表于 2011-02-10 15:35 |只看该作者
回复 3# very12345


    看出这个问题了,你可以试试:

   ....$loadfile>tmp
loadfile=tmp
....

论坛徽章:
0
5 [报告]
发表于 2011-02-10 15:43 |只看该作者
回复 4# yinyuemi

好像不行,这样里面什么东西都没了。
....
    nawk -F"$SEP" -v lineno=$lineno -v acl_p=$acl_p -v acl_pg=$acl_pg 'BEGIN{OFS=FS} {if(NR==lineno) {$8=acl_p;$9=acl_pg;print $0} else print $0 }' $loadfile > tmp.txt
loadfile=tmp.txt
...

论坛徽章:
0
6 [报告]
发表于 2011-02-10 16:02 |只看该作者
回复 1# very12345


    好像nawk 的输入文件不能变化

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
7 [报告]
发表于 2011-02-10 16:43 |只看该作者
本帖最后由 yinyuemi 于 2011-02-10 16:50 编辑

回复 1# very12345

不知这样行不?
  1. nawk -F"$SEP" '{print $1,$7,$8}' correct.txt | while lineno acl_p acl_pg
  2. do
  3. nawk -F"\t"  'BEGIN{OFS=FS} NR=="'$lineno'" {$8='$acl_p';$9='$acl_pg'}1' loadfile >tmp
  4. cat tmp >laodfile
  5. done
复制代码

论坛徽章:
0
8 [报告]
发表于 2011-02-10 18:21 |只看该作者
回复 7# yinyuemi


    我明天试试看
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP