【问题标题】:How to add [ ] brackets around first character of a word using bash如何使用bash在单词的第一个字符周围添加[]括号
【发布时间】:2014-02-24 14:45:02
【问题描述】:

这里描述了我的问题Add square bracket to the first character of string

使用上面的链接参考,我在过去 4 小时内尝试使用 bash 获得结果。

使用 sed 的任何解决方法。

#!/bin/bash
DESC="openerp-server"

initial="$(echo "$DESC" | sed 's/(.)/'[\1]'/g')"
echo $initial

谢谢。

【问题讨论】:

  • 您当前的尝试几乎是正确的。您只需将单引号放在:'[\1]' 周围并转义匹配组中的()\(.\)。或者,您可以将选项 -r 传递给 sed。使用它,将不再需要转义()。 (但-r 不是 POSIX)

标签: bash sed


【解决方案1】:

sed:

echo "string" | sed 's/^\(.\)/[\1]/'
echo "string" | sed 's/./[\0]/'         # The same but simplified

输出:

[s]tring

【讨论】:

  • 太棒了!我在踢自己。你能给我推荐一个学习sed的起点吗?我很感激答案.. :-)
  • 我建议O'Reilly
【解决方案2】:

bash 提供标准参数扩展运算符的扩展,让您可以轻松访问参数的第一个字符和其余字符。

$ DESC="openerp-server"
$ DESC="[${DESC:0:1}]${DESC:1}"
$ echo "$DESC"
[o]penerp-server

POSIX 兼容版本稍长,需要一个临时变量来保存尾部。

$ DESC="openerp-server"
$ DESC_tail=${DESC#?}
$ DESC="[${DESC%$DESC_tail}]$DESC_tail"
$ echo "$DESC"
[o]penerp-server

【讨论】:

    【解决方案3】:

    awk 版本:

    echo "string" | awk '{$1="["$1"]"}8' FS= OFS=
    [s]tring
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-02
      • 2018-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-17
      相关资源
      最近更新 更多