我想使用sed删除文件中算术形式中的${},例如abc=$((${var}+3))toabc=$((var+3))
我在sed中使用了位置交换,类似于
sed -E 's/(\w+\W\$\(\( ) (\$\{) (\w+) (\}) (.*)/\1 \3 \5/g file.txt'
但当我使用abc=3时,它只提取abc=3
echo abc=$((( ${var}+3 )) | sed -E 's/(\w+\W\$\(\( ) (\$\{) (\w+) (\}) (.*)/\1 \3 \5/'
在终端,只是为了检查它是否工作正常
并且它对shell脚本没有任何作用,我如何只删除文件的${}部分?
我用的是Mac OS,也试过Ubuntu,但还是一样
3条答案
按热度按时间f87krz0w1#
使用
sed
uurv41yg2#
***第一个解决方案:***此处使用捕获组概念,并使用捕获值替换匹配值,并且仅使用必需得值,请尝试以下
sed
代码.以下是sed
代码中使用得正则表达式得Online Demo.***或***如果您有一个要替换值的Input_file,请使用以下命令。
***第二个解决方案:***使用Perl的一行程序方法(使用Lazy match regex),可以尝试以下方法,使这里的工作更简单。
8cdiaqws3#