【问题标题】:AWK - replacement of the two commands 'printf, print' single command 'printf'?AWK - 替换两个命令'printf,print'单个命令'printf'?
【发布时间】:2012-04-02 15:08:35
【问题描述】:

请帮忙解决这个问题。

我有这个命令:

awk 'BEGIN {printf "%-15s", "Date of birth:" > "/dev/stderr"; getline var; print "Today finished:", var ,"days"}'

如何仅使用第一个命令“printf”打印“var”?我可以删除第二个命令“打印”吗?

感谢您的帮助。

EDIT-1:

垫子的答案

第一个例子很好,但在下一行打印'var'。是否可以在同一行打印“var”?

EDIT-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

EDIT-3:

shellter的答案

感谢您的 cmets。

【问题讨论】:

  • 为什么?第一个示例中的内容有效,不是吗?
  • 第一个例子很好,但在下一行打印'var'。是否可以在同一行打印“var”?
  • 当用户刚刚在同一行输入相同的值时,您真的希望 awk 在同一行打印 var 吗? ...为什么在提示Enter the date:              之后有这么多空格?那是您希望用户输入日期的地方吗?如果您展示一个实际示例来说明您期望成品线的外观,那将会有所帮助。因为目前它令人困惑,对我来说,您似乎希望它看起来像:Enter the date:              2012-03-17 2012-03-17 ...
  • 感谢您的帮助。正是这一点。数据将用于进一步计算。计算结果将打印在同一行中。示例: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
  • cmets 中的内容很难阅读,您可以编辑原始问题并使用文本输入框顶部的格式化工具使您的问题更清晰。祝你好运。

标签: awk printf getline


【解决方案1】:

在您的示例代码中,您已将 printf 重定向到 stderr。我认为这是因为您不希望 "Enter the date:" 进入最终输出(stdout),该输出将被进一步处理......这很有效,并且是一种处理不需要的文本的干净方式。

因此,如果您想要格式化输出:
Date of birth: 2011-02-23 Today finished: 2011-02-23 days
去标准输出(stdout),那么你的问题的答案很简单:你肯定需要调用print/printf 的另一个实例,它被定向到标准输出。

print/printf 没有哪里其输出的概念;它只是 prints ...重定向运算符 > 与 print(f) 的 internal 工作方式没有任何联系,因此您无法获得一次调用print(f) 将一些输出发送到stderr,其余的发送到stdout

【讨论】:

  • 感谢您的澄清。现在你可以管理了。我有这样一个问题。如何确认我得到了良好的响应?
  • 每个答案的左上角是一个数字,上面有箭头,下面有另一个。要将答案标记为好且有用,请单击上箭头;这增加了数字。要将答案标记为错误,请单击下方箭头以递减计数器。提问者(你)还有另一种选择,即。点击底部箭头下方的大勾号接受最佳答案。这通常意味着提问者可以向上/向下标记一个或多个答案,并在等待出现更好答案的时间后,标记最佳答案(通过勾选)。
猜你喜欢
  • 1970-01-01
  • 2014-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-13
  • 2013-12-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多