正在使用
!/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'