我试图从file2输入file1,以便file2中的每一行都是每个file1行的第一个字段,然后是空格和当前时间。
例如。
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`变成了
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但我得到的是
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我使用的代码是:
awk '{b=$1" "date +"%r"; print b >"file2.csv" }' file1.csv当我使用"%T“时,也会发生同样的情况。
发布于 2018-10-17 12:21:26
从你的问题中还不清楚你期待的是哪种行为,但这里有两个Gnu awk解决方案:
发布于 2018-10-17 12:11:18
这样编写,date被解释为变量名。由于未设置,根据上下文的不同,它的计算结果为""或0。后面的+运算符意味着它是在算术上下文中计算的,因此它采用了值0。
要将date +%r的值传递给您的awk脚本,可以使用以下两种方法之一:
# 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.csvhttps://stackoverflow.com/questions/52854404
复制相似问题