我正在尝试在awk命令中打印日期。我无法找到解决gawk的参数放在单引号内的事实,这取消了date
所需的执行:
gawk '/.*(ge|ga).*/ { print $1 "," $2 "," date } ' >> file.csv
gawk '/.*(ge|ga).*/ { print $1 "," $2 "," echo date } ' >> file.csv
gawk '/.*(ge|ga).*/ { print $1 "," $2 "," `date` } ' >> file.csv
gawk命令中的是什么方法?谢谢。
答案 0 :(得分:5)
这并不是100%清楚你在这里尝试做什么(一些输入和所需的输出会有用)但我认为这是你想要的:
gawk -v date="$(date)" -v OFS=, '/g[ea]/ { print $1, $2, date }'
根据date
命令的输出设置awk变量date
,并在第一个和第二个字段后打印它。我已将输出字段分隔符OFS
设置为使print
命令更整洁。
或者(可能更喜欢)是使用GNU awk中提供的strftime
函数:
gawk -v OFS=, '/g[ea]/ { print $1, $2, strftime() }'
输出格式略有不同,但可以通过将格式字符串传递给函数来调整。有关详细信息,请参阅GNU awk documentation。
我还根据评论中的建议(谢谢)简化了正则表达式。