免费注册 查看新帖 |

Chinaunix

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

指定列的替换字符 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-08-14 03:08 |只看该作者 |倒序浏览
文本的分隔符是单引号,想过滤掉第1列,第5列与第6列上的字符-

'韩春-雨'男'1986-08-15'-'吉林伊通满族-自治县吉林伊通满族自治县'220-1001-0
'张伟东'男'1978-07'-'吉林长春市绿园区吉林长春市绿园区'220-40-010
'陈立武'男'1970-06-21'-'吉林长春市朝阳区吉林长春市''220-200-10
'王-愈'男'1971-08-28'-'吉林长春市朝阳区吉林长春市朝阳区''220-5001-0


小弟目前是这么做的
先根据cut -f -s -d\'分割,然后用sed过滤后再paste,但是感觉比较繁琐(行数比较多),前求受教

论坛徽章:
0
2 [报告]
发表于 2008-08-14 06:39 |只看该作者
楼上问的有问题吧,以\'分割的话,第一列为空,
awk -F"'" '{print $2,$5,$6}' test_4 |sed 's/-//g'

论坛徽章:
0
3 [报告]
发表于 2008-08-14 09:18 |只看该作者
复杂了点
sed 's/-//g;s/^[^0-9]*[0-9]*./&-/;s/^\([^0-9]*[0-9]\{4\}\)\([0-9]\{2\}\)/\1-\2/;s/^\([^0-9]*[0-9-]\{7\}\)\([0-9]\+\)/\1-\2/'

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
4 [报告]
发表于 2008-08-14 09:23 |只看该作者

回复 #1 Qiangxi 的帖子

字段分割概念不清,awk

论坛徽章:
0
5 [报告]
发表于 2008-08-14 09:39 |只看该作者
以单引分,第一列是空.
nawk -F\' '{sub(/-/,"",$2);sub(/-/,"",$6);sub(/-/,"",$7);print $2,$3,$4,$5,$6,$7}' file

论坛徽章:
0
6 [报告]
发表于 2008-08-14 10:38 |只看该作者

回复 #5 edei2004 的帖子

是不是疏忽了?你把$7误写为$6了。
awk -F \' '{sub(/-/,"",$2);sub(/-/,"",$7);sub(/-/,"",$7);print $2,$3,$4,$5,$6,$7}' urfile

另外,看到楼主的写法,我翻看了awk的帮助手册,发现以下写法也不错。
awk -F \' '{gsub(/-/,"",$2);gsub(/-/,"",$7);print $2,$3,$4,$5,$6,$7}' urfile
韩春雨 男 1986-08-15 - 吉林伊通满族-自治县吉林伊通满族自治县 22010010
张伟东 男 1978-07 - 吉林长春市绿园区吉林长春市绿园区 22040010
陈立武 男 1970-06-21 - 吉林长春市朝阳区吉林长春市 22020010
王愈 男 1971-08-28 - 吉林长春市朝阳区吉林长春市朝阳区 22050010



【疑惑】awk中函数gsub、sub返回的结果都是匹配个数,但好像同时也完成了字段的替换操作,否则print上述字段时为何是替换后的结果呢?

[ 本帖最后由 li_haigang 于 2008-8-14 11:22 编辑 ]

论坛徽章:
0
7 [报告]
发表于 2008-08-15 09:11 |只看该作者
gsub(r, s [, t])        For  each substring matching the regular expression r in the string t, substitute the string s,
                               and return the number of substitutions.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP