sed
を使用して、スラッシュをバックスラッシュとスラッシュに変更したい、つまり/
-> \/
。しかし、それは機能しません。ここに小さな例があります:
#!/bin/bash
TEST=/etc/hallo
echo $TEST
echo $TEST | sed "s/hallo/bello/g"
echo $TEST | sed "s/\//\\\//g"
最初の3行の出力は想定どおりです。しかし、最後のものは機能しません。どうして?最後の部分を修正するには?
使用した式には一重引用符を使用します。
sed 's/\//\\\//g'
二重引用符で囲んで、\
には特別な意味があるため、バックスラッシュする必要があります。
sed "s/\//\\\\\//g"
しかし、区切り文字を変更する方がきれいです。
sed 's=/=\\/=g'
sed "s=/=\\\/=g"
試してください:
sed 's/\//\\\//g'
または、スラッシュをエスケープしないように別の区切り文字を使用します。
sed 's,/,\\/,g'