如何从 awk 中的变量中修剪空白?

新手上路,请多包涵

假设 $2 是我的变量。我试过从

awk -F\, '{print $2 ":"}'

awk -F\, '{print gsub(/[ \t]+$/, "", $2) ":"}'

但它从打印一些东西到什么都不打印。

原文由 Hoa 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 490
2 个回答

您正在打印 gsub 的结果,但 gsub$2 进行就地修改,而不是返回修改后的副本。调用 gsub ,然后打印:

 awk -F\, '{gsub(/[ \t]+$/, "", $2); print $2 ":"}'

原文由 je4d 发布,翻译遵循 CC BY-SA 3.0 许可协议

这些功能可以方便地提高可读性。它们还返回修剪后的结果:

 function ltrim(s) { sub(/^[ \t\r\n]+/, "", s); return s }
function rtrim(s) { sub(/[ \t\r\n]+$/, "", s); return s }
function trim(s) { return rtrim(ltrim(s)); }
BEGIN {
# whatever
}
{
# whatever
}
END {
# whatever
}

来源: https ://gist.github.com/andrewrcollins/1592991

原文由 Jong Bor Lee 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题