如何从我的路径中删除第一个 ./ 和结尾 / ?
现在我的代码有:
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)。