在awk

时间:2015-07-07 08:48:29

标签: bash date awk

我正在尝试在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命令中的是什么方法?谢谢。

1 个答案:

答案 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

我还根据评论中的建议(谢谢)简化了正则表达式。