sed任务在macbook pro上不起作用

sed任务在macbook pro上不起作用,sed,awk,Sed,Awk,我还没有找到以下愚蠢任务的解决方案 我有一个文件,我用它的完整路径表示 file_name 以及存储在变量var1和var2中的两个字符串 我知道var2中的字符串在文件file\u name中。我想用var1中的字符串查找并替换file\u name中出现的所有var2 这些字符串包含路径名。这意味着我在里面有字符/ 此外,我的机器是MacBookPro 结合在互联网上找到的许多建议,我最终在一个终端上进行了尝试 sed -i "" -e "s:$var2:$var1:g" file_na

我还没有找到以下愚蠢任务的解决方案

我有一个文件,我用它的完整路径表示

file_name 
以及存储在变量
var1
var2
中的两个字符串

我知道
var2
中的字符串在文件
file\u name
中。我想用
var1
中的字符串查找并替换
file\u name
中出现的所有
var2

这些字符串包含路径名。这意味着我在里面有字符
/

此外,我的机器是MacBookPro

结合在互联网上找到的许多建议,我最终在一个终端上进行了尝试

sed -i "" -e "s:$var2:$var1:g" file_name
结果:文件名未更改。有什么建议吗


awk有解决方案吗?

Mac使用BSD
sed
,而不是GNU
sed
。BSD
sed
没有
-i
-in-place
选项。您必须将其写入临时文件,然后在写入新文件后将其移动到位。

var2或var1中是否有
?var2中有任何正则表达式元字符吗?它们没有:,这就是我选择的原因:。但它们包含空格。这可能是个问题吗?不,空间不应该是个问题。但是任何
*
+
^
$
等都可能导致
var2
出现问题。使用内联代码执行一些小测试,即
var1=a;var2=A;回显“Abc”| sed“s/$var2/$var1/”
。当这可行时,然后一次做一个更改,直到得到最终的工作解决方案。你所发布的内容应该在表面上起作用。哦,等等,文件名是在windows计算机上创建的吗?如果是,请首先选择dos2unix文件名。祝你好运。根据@hek2mgl的评论。运行该命令时会发生什么情况?来自sed的错误?没有什么文件吐到终端了吗?