我正在尝试使用sed替换表达式.正则表达式适用于vim但不适用于sed.我正在用斜线替换数字前的最后一个破折号
/www/file-name-1 
应该回来
/www/file-name/1
我使用以下命令,但它继续输出/ www/file-name/0
sed 's/-[0-9]/\/\0/g' input.txt
我究竟做错了什么?
Bir*_*rei 15
您必须在括号中括起数据以便稍后引用它,并sed开始计数1.要恢复匹配的所有字符而不需要括号,则使用&符号.
sed 's/-\([0-9]\)/\/\1/g' input.txt
产量:
/www/file-name/1
您需要使用括号捕获才能返回引用(从a开始\1).试试sed -r 's|(.*)-|\1/|':
$ sed -r 's|(.*)-|\1/|' <<< "/www/file-name-1" 
/www/file-name/1
您可以使用任何分隔符,sed因此/在替换包含时不是最佳选择/.该-r选项用于扩展正则表达式,因此不需要对括号进行转义.
| 归档时间: | 
 | 
| 查看次数: | 12587 次 | 
| 最近记录: |