免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: shitou773
打印 上一主题 下一主题

[文本处理] 文本文件每一行的指定列插入分隔符 [复制链接]

论坛徽章:
3
酉鸡
日期:2014-04-23 17:17:56丑牛
日期:2014-05-08 11:41:302015亚冠之德黑兰石油
日期:2015-08-03 11:14:27
11 [报告]
发表于 2015-09-15 19:48 |只看该作者
回复 4# klainogn


   强! mark

论坛徽章:
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
12 [报告]
发表于 2015-09-15 20:02 |只看该作者
本帖最后由 jason680 于 2015-09-15 20:10 编辑

$ echo "1234567890" | awk -vs='3 5 8' 'BEGIN{t=split(s,a);for(n=1;n<=t;n++)FW=FW" "a[n]-a[n-1];FIELDWIDTHS=FW" "a[t]+999;OFS="|"}{$1=$1;print}'
123|45|678|90

$ echo "1234567890" | awk -vs='3 2 3' 'BEGIN{FIELDWIDTHS=s" "999;OFS="|"}{$1=$1;print}'
123|45|678|90

评分

参与人数 1信誉积分 +10 收起 理由
hjfeng1988 + 10 赞一个!

查看全部评分

论坛徽章:
0
13 [报告]
发表于 2015-09-16 10:53 |只看该作者
回复 12# jason680

请问

$ echo "1234567890" | awk -vs='3 2 3' 'BEGIN{FIELDWIDTHS=s" "999;OFS="|"}{$1=$1;print}'
123|45|678|90

这个语句BEGIN中   " "999   代表什么意思啊?

   

论坛徽章:
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
14 [报告]
发表于 2015-09-16 10:57 |只看该作者
回复 13# shitou773

去掉就知道了...

echo "1234567890" | awk -vs='3 2 3' 'BEGIN{FIELDWIDTHS=s;OFS="|"}{$1=$1;print}'
   

论坛徽章:
0
15 [报告]
发表于 2015-09-16 11:19 |只看该作者
回复 14# jason680
  1. [root@hadoop1 SMSP_SMS]#  echo "123456789012121233333" | awk -vs='3 2 3' 'BEGIN{FIELDWIDTHS=s;OFS="|"}{$1=$1;print}'
  2. 123|45|678
  3. [root@hadoop1 SMSP_SMS]#  echo "123456789012121233333" | awk -vs='3 2 3' 'BEGIN{FIELDWIDTHS=s" ";OFS="|"}{$1=$1;print}'
  4. 123|45|678
  5. [root@hadoop1 SMSP_SMS]#  echo "123456789012121233333" | awk -vs='3 2 3' 'BEGIN{FIELDWIDTHS=s" "10;OFS="|"}{$1=$1;print}'
  6. 123|45|678|9012121233
  7. [root@hadoop1 SMSP_SMS]#  echo "123456789012121233333" | awk -vs='3 2 3' 'BEGIN{FIELDWIDTHS=s" "999;OFS="|"}{$1=$1;print}'
  8. 123|45|678|9012121233333
复制代码
大致知道它在起什么作用了,但是linux在执行这个命令时,是具体怎么根据后面的 “ ”  和  数字  来起作用的啊?

   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP