作为一个完整的bash新手,我正在努力构建一个AWK语句,将输出打印为DATE。这是我一直在尝试的。关于如何使$ 6 = $ date?
的任何想法cat file.json |
jq -r '.pagedEntities._embedded.teamActivityList |
[.[].teamName, .[].rank, .[].average, .[].total] |
@csv' |
awk -F"," 'BEGIN { OFS = "," } ; {$6=$(date) OFS $6; print}'
答案 0 :(得分:2)
我知道您要求使用Awk命令,但由于您已经使用jq生成CSV文件,因此您可以在那里执行:
cat file.json |
jq --arg date "$(date)" -r '
.pagedEntities._embedded.teamActivityList |
[.[].teamName, .[].rank, .[].average, .[].total, $date] |
@csv'
这也使您免于使用不理解他们正在处理的语言的工具的陷阱,就像Awk和CSV的情况一样;例如,如果引用任何CSV条目并且其中包含逗号,则脚本将中断。
答案 1 :(得分:1)
如果在此命令中......
awk -F"," 'BEGIN { OFS = "," } ; {$6=$(date) OFS $6; print}'
...你试图将$ date
命令的输出分配给6美元,但这不会起作用。 $(command)
是Bourne shell语法,不能在awk
中使用。做你想做的最简单的方法可能是:
awk -v date="$(date)" -F"," 'BEGIN { OFS = "," } ; {$6=date; print}'
这会将date
的输出分配给awk
变量date
,然后可以在awk
脚本中使用该变量。
如果
看起来像。
答案 2 :(得分:0)
这是一个基于Santiago方法构建的解决方案,但使用jq的 now 和 strftime 函数,而不是使用unix date
命令
jq -r '
(now|strftime("%c")) as $date
| .pagedEntities._embedded.teamActivityList
| [.[].teamName, .[].rank, .[].average, .[].total, $date]
| @csv
' file.json