我有几个文件包含这样的行:
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
- 因为我没有把它放进
"
内存里,所以它没有出现在替换中。