从终端中删除包含变量字符串的双引号

从终端中删除包含变量字符串的双引号

我有几个文件包含这样的行:

from="$variable_name" and other stuff

$variable name可以改变,所以我可以

from="$myArray" and other stuff
from="$items" and other stuff
from="$list" and other stuff

我需要删除变量周围的双引号。结果应该是

from=$myArray and other stuff
from=$items and other stuff
from=$list and other stuff

文件夹内的所有文件都需要进行此替换。

是否可以使用 sed 和/或 awk 实现这一点?

答案1

这将针对您提供的示例执行此操作:

sed 's/"//g' <your_dir/*

一旦您确认它可以实现您想要的功能,只需添加-i和删除 <

sed -i 's/"//g' your_dir/*

"但是,如果在and other stuff该行的一部分中存在如下内容:

from="$variable_name" and "other" stuff

然后您可以运行两个替换命令,一个用于替换"$$另一个用于删除第二个命令,"如下所示(就地进行替换):

sed -i 's/"\$/\$/; s/"//' your_dir/*

要得到

from=$variable_name and "other" stuff

如果您有其他带有双引号但不属于 from="$variable_name"...以下形式的行:

from="$myArray" and other stuff
from="$list" and "other" stuff
more "stuff"

那么你可以这样做:

sed -i 's/^from="\$/from=\$/; s/\(\$\w\+\)"/\1/' your_dir/*

其工作方式如下:

  • \$\w+表示 '$OneOrMoreLetters'
  • 我记得这部分是把它括在\(和之间\)
  • 然后替换为和记住的内容\1
  • 因为我没有把它放进"内存里,所以它没有出现在替换中。

相关内容