免费注册 查看新帖 |

Chinaunix

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

[文本处理] 请教一个awk修改文件的问题 [复制链接]

论坛徽章:
1
操作系统版块每日发帖之星
日期:2015-11-29 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-11-05 17:41 |只看该作者 |倒序浏览
我现在有一个文件,格式如下:
1,2,3,4,5,6
q,e,r,t,y,y
。。。。

每行字段个数不确定,比如有可能是6个,也有可能是7个8个,但是都是以,分割,我现在想实现的就是吧某一行的某个字段替换成其他内容, 比如我想吧第一行的3改成9,其他保持不变,请问如何实现?谢谢!

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
2 [报告]
发表于 2015-11-05 18:32 |只看该作者
回复 1# sky__sea

n for line
t for item
v for value

$ awk 'BEGIN{n=1;t=3;v=9;FS=OFS=","}NR==n{$t=v}1' FILE
1,2,9,4,5,6
q,e,r,t,y,y

$ awk 'BEGIN{n=2;t=4;v="a";FS=OFS=","}NR==n{$t=v}1' FILE
1,2,3,4,5,6
q,e,r,a,y,y

   

论坛徽章:
1
操作系统版块每日发帖之星
日期:2015-11-29 06:20:00
3 [报告]
发表于 2015-11-06 10:11 |只看该作者
请问NR==n{$t=v}1,最后的1是什么意思?

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
4 [报告]
发表于 2015-11-06 10:17 |只看该作者

论坛徽章:
1
操作系统版块每日发帖之星
日期:2015-11-29 06:20:00
5 [报告]
发表于 2015-11-06 10:27 |只看该作者
非常感谢!

论坛徽章:
780
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
6 [报告]
发表于 2015-11-06 10:29 |只看该作者
  1. echo -e "1,2,3,4,5,6,33\nq,e,r,t,y,y\n1,2,3,4,5,6"|sed '1s/\<3\>/9/'
  2. 1,2,9,4,5,6,33
  3. q,e,r,t,y,y
  4. 1,2,3,4,5,6
复制代码

论坛徽章:
13
双鱼座
日期:2013-10-23 09:30:05数据库技术版块每日发帖之星
日期:2016-04-20 06:20:00程序设计版块每日发帖之星
日期:2016-03-09 06:20:002015亚冠之塔什干火车头
日期:2015-11-02 10:07:452015亚冠之德黑兰石油
日期:2015-08-30 10:07:07数据库技术版块每日发帖之星
日期:2015-08-28 06:20:00数据库技术版块每日发帖之星
日期:2015-08-05 06:20:002015年迎新春徽章
日期:2015-03-04 09:57:09辰龙
日期:2014-12-03 14:45:52酉鸡
日期:2014-07-23 09:46:23亥猪
日期:2014-03-13 08:46:22金牛座
日期:2014-02-11 09:36:21
7 [报告]
发表于 2015-11-06 10:30 |只看该作者
  1. awk 'NR==1{sub(3,9);}1' urfile
复制代码

论坛徽章:
0
8 [报告]
发表于 2015-11-06 15:13 |只看该作者
awk -F"," '{for(i=1;i<=NF;i++)if($i==3)$i=9}' awk.txt
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP