shell 给字符串增加单引号,并移除字符串中多余的空格

用到的命令:

  1. echo 输出字符串
  2. tr 常用于处理字符串间隔,例如将空格分割替换为逗号分割;删除多个连续的空格等等
  3. sed 也是用于字符串处理。如字符串替换,也可做字符串删除
  4. awk 也用于字符串处理。如将字符串按照空格等分隔符,分成好几列,按需输出某一列的值;字符计数,统计次数;复杂的字符串处理等。

案例
例如:将 “ key1 key2 key3 ” 这个字符串的分隔符变更为"," ,并删除多余的空格,同时给每个元素都加上单引号 ''.

`1. 首先将多个空格压缩为一个空格。使用命令 tr -s
echo " key1 key2 key3 " | tr -s ' '
key1 key2 key3

  1. 现在就可以给元素加上''单引号了,同时加上,逗号作为分隔符。awk -F 可以指定字符串的分隔符,不指定默认使用空格分割。\047是'单引号对应的ascii码的值。最后的"" 是一个空字符串。这里使用 print "" 的目的通常是为了在输出中添加一个换行符,因为 print 函数在打印文本后会自动添加一个换行符。
    echo " key1 key2 key3 " | tr -s ' '| awk '{for(i=1; i<=NF;i++) printf("\047%s\047,", $i);print ""}'
    'key1','key2','key3',

  2. 最后,删除多余的逗号 , 。我们使用sed 来实现。

    • s/,*//:这个操作匹配字符串开头的零个或多个逗号(,*),并替换它们为空字符串(即删除它们)。
    • s/,$//:这个操作匹配字符串末尾的零个或多个逗号(,$),并同样替换它们为空字符串。

echo " key1 key2 key3 " | tr -s ' '| awk '{for(i=1; i<=NF;i++) printf("\047%s\047,", $i);print ""}'| sed 's/^,//;s/,$//'
'key1','key2','key3'`

完整过程:

tr 其他常见用法:
tr -d ' ' 删除字符串中的单个或多个连续的空格
tr ' ', ',' 将字符串的空格替换为 ','逗号

posted on 2024-03-11 15:29  进取  阅读(30)  评论(0编辑  收藏  举报