You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在awk中打印竖线字符以分隔输出结果?

解决awk输出分隔符问题

你的问题核心是错误地对|进行转义,以及没有正确在print语句中插入分隔字符串。|在awk的普通字符串里不需要转义,直接作为字面量使用即可。

修正后的两种可行写法:

写法1:保持双引号包裹awk代码,内部字符串用转义双引号

awk "BEGIN{print int(($high-32)*5/9) \" | \" int(($low-32)*5/9)}"

外层用双引号时,awk代码内的字符串双引号需要加反斜杠转义,避免被shell提前解析。

写法2:改用单引号包裹awk代码(更推荐,减少shell变量转义冲突)

awk 'BEGIN{print int(('$high'-32)*5/9) " | " int(('$low'-32)*5/9)}'

这里shell变量$high和$low需要用单引号断开awk的单引号范围,让shell先解析变量值,再传递给awk执行。

你之前尝试报错的原因:

  • 若直接写"\|",shell会先解析反斜杠为转义符,导致传递给awk的语法出现错误;且awk本身不需要转义|,多余的反斜杠会被当成字符串的一部分,引发语法问题。
  • 正确逻辑是在两个数值计算表达式之间,直接插入" | "字符串,让awk依次输出第一个数值、分隔符、第二个数值。

假设high=66、low=52(对应转换后19和11),运行上述代码即可得到19 | 11的目标输出。

内容的提问来源于stack exchange,提问作者Irvin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 23:32:04