如何使用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
如何使用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个字符的字符串问题,你可以使用猛砸子提取功能。
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变量的方法。
随着sed
:
sed 's/,\+$//' file
使用SED:
sed 's/,,*$//g' file
我猜你需要删除那些无谓的,
的
sed 's/,,//g;s/\,$//g' your_file
测试:
> cat temp
ssl01:49188,,,
ssl01:49188,
ssl01:49188,,,,,
ssl01:49188,,,
ssl01:49188,
ssl01:49188,,,,,
ssl01:49188,ssl999999:49188,,,,,
ssl01:49188,abcf999:49188,,,,,
> sed 's/,,//g;s/\,$//g' temp
ssl01:49188
ssl01:49188
ssl01:49188
ssl01:49188
ssl01:49188
ssl01:49188
ssl01:49188,ssl999999:49188
ssl01:49188,abcf999:49188
>