在linux中用\替换字符串

时间:2014-02-11 19:28:13

标签: linux shell sed

我需要在FileA上用“badfile'filepath \ badfile”替换“badfile'C:users \ username \ desktop”的出现。换句话说,用badfile'filepath \ badfile

替换badfile'C:users \ username \ desktop

我尝试了以下方法但没有效果

test=badfile 'C:users\\username\\desktop
test1=badfile 'filepath\\badfile
echo $test
echo $test1
sed -i 's|$test|$test1|g' FileA

我需要有关如何使此代码工作的帮助或更好的方法将受到赞赏。

2 个答案:

答案 0 :(得分:0)

你需要:

  1. 使用双引号"封装变量值,以保留其值中的单引号字符。
  2. 将反斜杠字符\转义为\\
  3. 使用双引号'替换sed命令中的单引号",以允许变量替换。使用单引号,您告诉它将字符串 $test替换为字符串 $test1
  4. 你得到:

    test="badfile 'C:users\\\\username\\\\desktop"
    test1="badfile 'filepath\\\\badfile"
    echo $test
    echo $test1
    sed -i "s|$test|$test1|g" FileA
    

答案 1 :(得分:0)

在这里

#echo $test

badfile 'C:users\username\desktop

#echo $test | sed "s/\(.*\)\'\(.*\)/\2\|\1'/g"| sed 's/|/\\/g'

C:users\username\desktop\badfile '