【发布时间】:2020-09-24 16:00:32
【问题描述】:
我编写了以下利用 awk 的 bash 脚本,目的是将第一个字符设置为小写。该脚本工作得很好,但是当我连接这两个值时,我添加了一个额外的空间。任何想法如何删除这个错误的空间?
脚本:
#!/bin/bash
foo="MyCamelCaseValue"
awk '{s=tolower(substr($1,1,1))}{g=substr($1,2,length($1))}{print s,g}' <<<$foo
输出:
m yCamelCaseValue
编辑:
请参阅 Bobdylan 和 RavinderSingh13 对已接受答案的讨论,因为它突出了默认 MacOs bash 版本的问题。
bash --version GNU bash,版本 3.2.57(1)-release (x86_64-apple-darwin19) 版权所有 (C) 2007 Free Software Foundation, Inc.
【问题讨论】:
-
使用
{print s""g} -
@RavinderSingh13 - 我在帖子被删除之前正在打字。无论如何-是的,我同意。但我更强调的是,是的,它在技术上是一种解决方案——但这不是最优雅的方式。他的尝试是一种尝试——但并不意味着它不能在批发时重写和改进。 :)
-
使用 13 岁以上的版本有点问题,但我同意这个版本可能是个问题(不知道它是什么时候引入的)
-
当然可以——我已经提交了一份回复作为替代方案,无论如何我们都同意。如果在 15 年前的版本(即 macos 默认)上并且您无法升级,那么一定要执行 awk 等。如果没有,请使用正确版本的 bash(您应该这样做)并以这种方式进行。现在离开这篇文章,因为我已经花了太长时间了;)
-
我很乐意升级,问题是我正在创建这个脚本供我公司的其他 mac 用户使用。解决方案是打包,这样他们就不必担心版本,但我宁愿它使用他们设置的默认设置。听起来很愚蠢,对不起各位!感谢您的所有帮助:)
标签: awk