如何用 sed 删除开头和结尾?

如何用 sed 删除开头和结尾?

如何从我的路径中删除第一个 ./ 和结尾 / ?

现在我的代码有:

sed -i 's/dir2\/file-example.json//' test.sh

它打印出来是这样的:

./dir1/

但我想这样:

dir1

这样它就会从开头和结尾删除 ./ 和 / 并仅保留目录名称。

这可能吗?

答案1

您不必使用/作为正则表达式分隔符,但可以回退到“任何其他单个字符” - 转义它。info sed:

'\%REGEXP%' ('%' 可以替换为任何其他单个字符。)

 This also matches the regular expression REGEXP, but allows one to
 use a different delimiter than '/'.

s替代命令中,你甚至不需要逃跑。尝试

sed -i 's%\./%%; s%/dir2/file-example.json%%;' test.sh

请注意,点也必须转义才能关闭其在正则表达式中的特殊含义。

使用“反向引用”,这可能变得更加简单:

sed -i 's%\./\(dir1\)/dir2/file-example.json%\1%;' test.sh

其中\1引用回到第一个带括号的部分正则表达式(此处:dir1)。

相关内容