免费注册 查看新帖 |

Chinaunix

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

应用awk遇到的一个问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-01-08 15:06 |只看该作者 |倒序浏览
问题描述:
搜索文件等号左边字符串为“xie”,然后将等号左边改为“big leg"。

环境:
文件test内容如下,(随便敲的,就是用等号分隔开)
在vi下打开的状态:
  1 asdf=sdf
  2 asdfasd=asdf
  3
  4 asfasdf=asdf
  5 sa=sdf
  6 das=sdf
  7 df=asdf
  8 asdfasd=asdf
  9 xie=leg
10 as=sdf
11 df=sadf
12 asdf=sdf
13 asd=sdf
14 f=sdf

操作:
awk  'BEGIN {FS="="} {if($1=="xie") $2="big leg"} {print $0}'

结果:
asdf=sdf
asdfasd=asdf

asfasdf=asdf
sa=sdf
das=sdf
df=asdf
asdfasd=asdf
xie big leg
as=sdf
df=sadf
asdf=sdf
asd=sdf
f=sdf

问题:
怎么查到修改之后,等号怎么没有了呢,只是修改的$2啊。

论坛徽章:
0
2 [报告]
发表于 2010-01-08 15:20 |只看该作者
awk  'BEGIN {FS=OFS"="} {if($1=="xie") $2="big leg"} {print $0}'  file

或者awk '/^xie=/{$0="xie=big leg"}1' file

论坛徽章:
0
3 [报告]
发表于 2010-01-08 16:20 |只看该作者
OFS"="}
就是这个OFS的问题,默认的OFS是空格

论坛徽章:
0
4 [报告]
发表于 2010-01-09 15:50 |只看该作者

回复 #2 ywlscpl 的帖子

您好,很感谢您的帮助。自己试了下,第一个方法您是忘记在OFS后边输入等号了是吗
如果原封不动的输入,结果(抽取了下,只显示要更改的一行)
xie=leg
加上等号
xie=big leg

小弟不明白,FS和OFS的区别,能解释下吗?

第二个方法是好使的,但是不明白后边的数字1是什么意思,大侠帮忙也解释下吧

论坛徽章:
0
5 [报告]
发表于 2010-01-09 16:01 |只看该作者
呵呵刚查了下,知道了OFS是输出内容的字段分隔符,但是数字1还是不明白

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
6 [报告]
发表于 2010-01-09 16:24 |只看该作者

回复 #5 aprilava 的帖子

论坛徽章:
0
7 [报告]
发表于 2010-01-09 23:10 |只看该作者
学习了。~

论坛徽章:
0
8 [报告]
发表于 2010-01-11 09:56 |只看该作者

回复 #6 Shell_HAT 的帖子

3x,明白啦

论坛徽章:
0
9 [报告]
发表于 2010-01-22 20:19 |只看该作者

回复 #4 aprilava 的帖子

论坛搜索下吧就知道1了~2楼的第二种方法很经典~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP