如何使用shell脚本从特定字符串中删除所有n个字符,

ssl01:49188,,,
ssl01:49188,
ssl01:49188,,,,,
ssl01:49188,ssl999999:49188,,,,,
ssl01:49188,abcf999:49188,,,,,

输出格式如下
ssl01:49188
ssl01:49188
ssl01:49188
ssl01:49188,ssl999999:49188
ssl01:49188,abcf999:49188

最佳答案

要用指定在字符串中剪切最后n个字符来回答问题的标题,可以在Bash中使用子字符串提取功能。

me@home$ A="123456"
me@home$ echo ${A:0:-2}  # remove last 2 chars
1234

但是,根据您的示例,您似乎希望删除所有尾随逗号,在这种情况下,您可以使用sed 's/,*$//'
me@home$ echo "ssl01:49188,ssl999999:49188,,,,," | sed 's/,*$//'
ssl01:49188,ssl999999:49188

或者,对于纯Bash解决方案,可以使用子字符串移除:
me@home$ X="ssl01:49188,ssl999999:49188,,,,,"
me@home$ shopt -s extglob
me@home$ echo ${X%%+(,)}
ssl01:49188,ssl999999:49188

如果转换需要应用于整个文件,我将使用sed方法;如果目标字符串已经在bash变量中,则使用bash子字符串删除方法。

关于bash - 使用Shell脚本截断字符串中的最后n个字符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14338416/

10-13 05:14