仅替换符号之后和另一个符号之前的字符?

仅替换符号之后和另一个符号之前的字符?

我真的很难回答这个问题。抱歉问了这么一个菜鸟问题。

查找出来的行产生如下结果:

192.168.1.234/50112(LOCAL\username)

期望输出:

192.168.1.234-(LOCAL\username)

我知道我可以创建一个语句来查找/第一部分的“之后的所有字符”,因为这个正斜杠是每行中正斜杠的第一个实例。

我该如何替换每行中的/(之间的数字?-

答案1

如果总是数字,你可以说

$ echo "$line" | sed 's,/[[:digit:]]\+,-,'
192.168.1.234-(LOCAL\username)

否则,如果你不知道里面有什么,请匹配斜线和一个或多个非括号字符

$ echo "$line" | sed 's,/[^(]\+,-,'
192.168.1.234-(LOCAL\username)

实际上,您可以使用扩展通配符在 bash 中正确执行此操作:

$ shopt -s extglob
$ echo "${line/\/+([0-9])/-}"
192.168.1.234-(LOCAL\username)

相关内容