我正在尝试在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
Run Code Online (Sandbox Code Playgroud)
在gawk命令中有什么方法可以解决这个问题?谢谢.
它不是100%清楚你在这里尝试做什么(一些输入和所需的输出将是有用的)但我认为这是你想要的:
gawk -v date="$(date)" -v OFS=, '/g[ea]/ { print $1, $2, date }'
Run Code Online (Sandbox Code Playgroud)
这将date根据date命令的输出设置awk变量,并在第一个和第二个字段之后打印它.我已设置输出字段分隔符OFS以使print命令更整洁.
或者(可能更喜欢)是使用strftimeGNU awk中提供的函数:
gawk -v OFS=, '/g[ea]/ { print $1, $2, strftime() }'
Run Code Online (Sandbox Code Playgroud)
输出的格式略有不同,但可以通过将格式字符串传递给函数来进行调整.有关详细信息,请参阅GNU awk文档.
我还根据评论中的建议(谢谢)简化了正则表达式.