首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么awk在系统调用后会返回额外行和"0“?

为什么awk在系统调用后会返回额外行和"0“?
EN

Stack Overflow用户
提问于 2015-01-04 17:22:35
回答 1查看 646关注 0票数 2

这个awk脚本使用系统调用将秒转换为timecodes。为什么不使用内置函数来代替呢?因为便携的原因。这需要在OS小牛(GNU,版本3.2.53,awk版本20070501)上工作,而内置的strftime函数是不可用的(据我所知)。

代码语言:javascript
复制
cat file
A 3000
B 3010
C 3020

我的剧本:

代码语言:javascript
复制
awk '{ printf "%s %s\n", system( "date -r " $2 " -j +%H:%M:%S" ), $1 }' file

返回此

代码语言:javascript
复制
01:50:00
0 A
01:50:10
0 B
01:50:20
0 C

当我试图在同一行中打印第一个记录的值时,时间码如下所示:

代码语言:javascript
复制
01:50:00 A
01:50:10 B
01:50:20 C

我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-04 17:29:32

只需使用date命令打印$1的文字值,如下所示:

代码语言:javascript
复制
awk '{ system( "/bin/date -r " $2 " -j \"+%H:%M:%S " $1 "\"" ) }' file
19:50:00 A
19:50:10 B
19:50:20 C

或者在awk中使用getline

代码语言:javascript
复制
awk '{ cmd = "/bin/date -r " $2 " -j +%H:%M:%S"; 
        if (cmd | getline var) printf "%s %s\n", d, $1; close (cmd) }' file
19:50:00 A
19:50:10 B
19:50:20 C
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27768218

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档