首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“当前时间”输出为零

“当前时间”输出为零
EN

Stack Overflow用户
提问于 2018-10-17 12:00:33
回答 2查看 43关注 0票数 2

我试图从file2输入file1,以便file2中的每一行都是每个file1行的第一个字段,然后是空格和当前时间。

例如。

代码语言:javascript
复制
IN-X_4096_20140802_121306_007 `random text`
IN-X_4096_20140802_133431_012 `random text`
IN-A_6046_20130613_165426 `random text`
IN-A_6046_20130613_165426 `random text`
IN-X_4096_20140802_133431_014 `random text`

变成了

代码语言:javascript
复制
IN-X_4096_20140802_121306_007 14:24:32
IN-X_4096_20140802_133431_012 14:24:32
IN-A_6046_20130613_165426 14:24:32
IN-A_6046_20130613_165426 14:24:32
IN-X_4096_20140802_133431_014 14:24:32

但我得到的是

代码语言:javascript
复制
IN-X_4096_20140802_121306_007 0
IN-X_4096_20140802_133431_012 0
IN-A_6046_20130613_165426 0
IN-A_6046_20130613_165426 0
IN-X_4096_20140802_133431_014 0

我使用的代码是:

代码语言:javascript
复制
awk '{b=$1" "date +"%r"; print b >"file2.csv" }' file1.csv

当我使用"%T“时,也会发生同样的情况。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-17 12:21:26

从你的问题中还不清楚你期待的是哪种行为,但这里有两个Gnu awk解决方案:

  1. 在整个命令运行期间,计算的日期-时间字符串必须是常量: {t=strftime(“%r”)}{打印$1,t }‘file1.csv > file2.csv
  2. 计算的日期-时间字符串必须按行更新: {打印$1,strftime("%r") }‘file1.csv > file2.csv
票数 2
EN

Stack Overflow用户

发布于 2018-10-17 12:11:18

这样编写,date被解释为变量名。由于未设置,根据上下文的不同,它的计算结果为""0。后面的+运算符意味着它是在算术上下文中计算的,因此它采用了值0

要将date +%r的值传递给您的awk脚本,可以使用以下两种方法之一:

代码语言:javascript
复制
# the time when the script was run, doesn't change
awk -v time="$(date +%r)" '{ print time }' file1.csv

# the time when each record is read
awk '{ cmd = "date +%r"; cmd | getline time; print time; close(cmd) }' file1.csv
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52854404

复制
相关文章

相似问题

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