免费注册 查看新帖 |

Chinaunix

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

[文本处理] awk的执行系统命令问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-10-18 12:39 |只看该作者 |倒序浏览
[root@localhost ~]$echo "14-Oct-2012"|awk '{a=$0;"date -s 'a' +%F"|getline b;print b}'
2012-10-10
请问哪里出错了,得出的日期不正确.

论坛徽章:
0
2 [报告]
发表于 2012-10-18 12:43 |只看该作者
没看懂你要干嘛

awk 执行系统命令应该用 system 吧

如: $ echo | awk '{system("date")}'
Thu Oct 18 12:48:40 CST 2012

论坛徽章:
0
3 [报告]
发表于 2012-10-18 13:41 |只看该作者
回复 2# angle4


    其实是.有如下内容:
  1. 10/Oct/2012:10:39:45
  2. 11/Oct/2012:10:39:45
  3. 12/Oct/2012:10:39:45
  4. 13/Oct/2012:10:39:45
  5. 14/Oct/2012:10:39:45
复制代码
把11/Oct/2012 替换为2012-10-11

论坛徽章:
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 [报告]
发表于 2012-10-18 14:53 |只看该作者
回复 1# chaseey


    不能用单引号啊。

try
  1. echo "14-Oct-2012"|awk '{a=$0;"date -s " a " +%F"|getline b;print b}'
复制代码

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
5 [报告]
发表于 2012-10-18 15:27 |只看该作者
  1. echo "10/Oct/2012:10:39:45" | awk -F '/|:' '{system("date -d"$1$2$3" +%F")}'
复制代码

论坛徽章:
0
6 [报告]
发表于 2012-10-18 16:08 |只看该作者
回复 6# greysky-zfj


    这个可以执行,不过我还有个要求是date 输出到标准输出,awk 还要读取这个标准输出作为判断条件. 所以我用的getline

system("")|getline 不行
"  " |getline 可以,不过加上参数后出错.

论坛徽章:
0
7 [报告]
发表于 2012-10-18 16:22 |只看该作者
本帖最后由 kk5234 于 2012-10-18 16:26 编辑

回复 7# chaseey
  1. echo "14-Oct-2012"|awk '{a=$0;cmd="date +%F -d "a"";cmd|getline b;print b}'
  2. 2012-10-14
复制代码

论坛徽章:
0
8 [报告]
发表于 2012-10-18 17:43 |只看该作者
回复 8# kk5234


    这个可以!! 为什么命令需要中间赋值?

论坛徽章:
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
9 [报告]
发表于 2012-10-18 20:18 |只看该作者
回复 9# chaseey

$ echo "14-Oct-2012" | awk '{"date +%F -d "$0 | getline; print}'
2012-10-14

   

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
10 [报告]
发表于 2012-10-19 11:23 |只看该作者
chaseey 发表于 2012-10-18 17:43
回复 8# kk5234
为了看起来,显得不那么乱,同时方便调试print cmd,执行的命令是否正确。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP