我有一个充满SAS标签文件的目录。
标签文件在每个文件中都有空格,单引号,空格,单引号:
file_put_contents("../img/name.jpg", file_get_contents($im));
我想要一个bash脚本,用双引号替换这些单引号,以便最终得到:
VAR1 = ' 'SOME LABEL' '
我该怎么做?
答案 0 :(得分:1)
假设我们有这个测试文件:
$ cat file
VAR1 = ' 'SOME LABEL' '
要将sinqle-quote-space-single-quote替换为双引号,我们可以使用sed:
$ sed "s/' '/\"/g" file
VAR1 = "SOME LABEL"
如果以上产生了您想要的输出,那么您可能想要就地更改文件。这可以使用:
完成sed -i "s/' '/\"/g" file # linux
sed -i "" "s/' '/\"/g" file # BSD/OSX
要替换当前目录中的所有文件:
sed -i "s/' '/\"/g" * # linux
sed -i "" "s/' '/\"/g" * # BSD/OSX
$ cat file
VAR1 = ' 'SOME LABEL' '
$ sed -i "s/' '/\"/g" * # linux
$ cat file
VAR1 = "SOME LABEL"
答案 1 :(得分:0)
我会尝试像
这样的东西for f in *
do
sed "s/' '/\"/g" "$f" > "$f".new && mv "$f".new "$f"
done
(但是像这样批量编辑文件可能会有风险,所以请在尝试之前备份文件!)
答案 2 :(得分:0)
示例:
> cat t.sas
variable="vol1"
variable2="vol3"
sed -i '' "s/\"\(.*\)\"/\'\1\'/" *.sas
这样做是搜索匹配 .sas的目录中的所有文件,然后在每个文件中搜索正则表达式“”,然后在插入标识的测试时将“”替换为“” sed命令的右侧。
结果:
> cat t.sas
variable='vol1'
variable2='vol3'
...因而
sed -i '' "s/\'\(.*\)\'/\"\1\"/" *.sas
> cat t.sas
variable="vol1"
variable2="vol3"