bash - 从 Bash 中的字符串末尾删除特定字符的序列

标签 bash sed

输入:

i="Item1;Item2;Item3;;;;;;;;"

期望的输出:

i="Item1;Item2;Item3"

如何去掉最后几个分号?

我知道使用“sed”的一种方法:

sed 's/;$//'

但是,它只删除最后一个分号。反复运行它似乎并不实际。

最佳答案

您不需要为此使用外部实用程序。

$ input='Item1;Item2;Item3;;;;;;;;'
$ echo "${input%"${input##*[!;]}"}"
Item1;Item2;Item3

或者,使用扩展的 glob:

$ shopt -s extglob
$ echo "${input%%*(;)}"
Item1;Item2;Item3

关于bash - 从 Bash 中的字符串末尾删除特定字符的序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69523297/

相关文章:

regex - 从特定列的时间戳中删除毫秒

unix - 如何使用tcl文件中的sed

macos - 获取文件夹(或子文件/文件夹)的最后修改日期和时间

bash - 如何使用 Bash 脚本测试是否存在多个文件

linux - 在脚本中为特定日期添加动态天数

text - 如何使用 sed/awk 从文件中删除文本 block (模式)

regex - Linux Shell 脚本 - 正则表达式过滤带有日期的文件名

json - 将 JSON 对象传递给 jq 参数

unix - 如何使用 SED/AWK 交换文本文件中的第一行和最后一行

bash - sed 使用 : expected context address