代码之家  ›  专栏  ›  技术社区  ›  ramgorur

sed:查找并替换二进制文件中的字符串(使用$和空格等字符)

  •  0
  • ramgorur  · 技术社区  · 10 年前

    我有一个文件,其中有一个字符串 tail +390 $0 > $outname 。我需要找到这行,并用 tail -n +390 $0 > $outname 。我正在尝试 sed 像这样--

    sed -i -e 's/tail +390 \$0 > \$outname/tail -n +390 \$ > \$outname' file.bin ;
    

    sed -i -e 's/tail\ +390\ \$0\ >\ \$outname/tail\ -n\ +390\ \$\ > \$outname' file.bin ;
    

    我试图修改的文件是一个二进制文件。

    但我不能让它工作,任何提示都将不胜感激。

    1 回复  |  直到 10 年前
        1
  •  2
  •   Avinash Raj    10 年前

    你只需要添加一个 / 最后,因为你的sed语法不正确。就像 s/search/replace 但应该是 s/search/replace/optional-modifiers .

    sed -i 's/tail +390 \$0 > \$outname/tail -n +390 \$0 > \$outname/' file
    

    例子:

    $ echo 'tail +390 $0 > $outname' | sed 's/tail +390 \$0 > \$outname/tail -n +390 \$0 > \$outname/'
    tail -n +390 $0 > $outname