请帮助解决这个问题。
我有这个命令:
awk 'BEGIN {printf "%-15s", "Date of birth:" > "/dev/stderr"; getline var; print "Today finished:", var ,"days"}'
如何仅使用第一个命令'printf'打印'var'?我可以删除第二个命令'print'吗?
感谢您的帮助。
修改-1:
回答 Mat
第一个例子很好,但在下一行打印'var'。是否可以在同一行中打印'var'?
修改-2:
回答 Peter.O
感谢您的帮助。确实如此。数据将用于进一步计算。计算结果将打印在同一行。例如:
awk 'BEGIN {printf "%-15s", "Date of birth:" > "/dev/stderr"; getline var; print "Today finished:", var ,"days"}'`
我想得到结果:
Date of birth: 2011-02-23 Today finished: 2011-02-23 days
修改-3:
回答 shellter
感谢您的评论。
答案 0 :(得分:1)
在您的示例代码中,您已将printf
重定向到stderr。我认为这是因为你不希望"Enter the date:"
进入最后的输出(stdout),这将被进一步处理......这是有效的,并且是处理不需要的文本的一种干净方式。
所以如果你想要你的格式化输出:
Date of birth: 2011-02-23 Today finished: 2011-02-23 days
要转到标准输出(stdout),那么你的问题的答案很简单:你肯定需要调用另一个print/printf
的实例,它被导向标准输出。
print/printf
没有其中输出的概念;只是打印 ...重定向操作符>
与print(f)的内部工作没有任何关联,所以你不能得到一个打印(f)将一些输出发送到stderr
,其余输出发送到stdout
。