sed 替换斜线

sed 替换斜线

正在使用

!/bin/bash
     for fl in *.txt; do
     mv $fl $fl.old
     sed 's/files.php?file=/file/g' $fl.old > $fl
     rm -f $fl.old
     done

我需要用文件/而不仅仅是文件替换输出,无法弄清楚

答案1

使用:

sed 's/files.php?file=/file\//g;' $fl.old > $fl

注意在替换之后\用来转义.../file

答案2

你可以使用#|代替 来/让在模式中使用斜线时更加轻松:

!/bin/bash
     for fl in *.txt; do
     mv $fl $fl.old
     sed 's#files.php?file=#file/#g' $fl.old > $fl
     rm -f $fl.old
     done

这样你就不必转义所有想要匹配或替换的斜线,例如\/

另外,需要明确的是:

/是斜线

\是反斜杠

答案3

您可以使用反斜杠转义:

sed 's/files.php?file=/file\//g' $fl.old > $fl

这将产生所需的输出。

答案4

你不必使用/sed ,你可以使用其他东西,例如#|

sed 's#files.php?file=#file/#g'

或者

sed 's|files.php?file=|file/|g'

相关内容