2 things
如果您添加一个,会更容易看到您的问题\n
在你的最后printf
string
那么输出是
>echo '1,2' | awk 'BEGIN {RS=","};{printf "%i\t%i\t%s\n",$1,$2,system("date")}'
Wed Feb 26 21:30:17 CST 2014
1 0 0
Wed Feb 26 21:30:17 CST 2014
2 0 0
我猜输出来自system("date")
返回 awk 范围“外部”的输出$0
处理的每行输入的自然范围。其他人也许能够提供更好的解释。
为了获得你想要的输出,我正在使用getline
函数捕获的输出date
对变量的命令(myDt
)。现在输出是
> echo '1,2' | awk 'BEGIN {RS=","};{"date" | getline myDt ; printf "%i\t%i\t%s\n",$1,$2,myDt}'
1 0 Wed Feb 26 21:31:15 CST 2014
2 0 Wed Feb 26 21:31:15 CST 2014
最后我们去掉“调试”\n
char,并获取您指定的输出:
> echo '1,2' | awk 'BEGIN {RS=","};{"date" | getline myDt ; printf "%i\t%i\t%s",$1,$2,myDt}'
1 0 Wed Feb 26 21:34:56 CST 2014
2 0 Wed Feb 26 21:34:56 CST 2014
而且,根据 Jaypal 的帖子,我现在看到了FS=","
是另一个问题,所以当我们进行更改并返回“\n”字符时,我们有
echo '1,2' | awk 'BEGIN {FS=","};{"date" | getline myDt ; printf "%i\t%i\t%s\n",$1,$2,myDt}'
1 2 Wed Feb 26 21:44:42 CST 2014