我希望能够使用sed来获取输入,例如:
C:\Windows\Folder\File.txt
Run Code Online (Sandbox Code Playgroud)
至
C:/Windows/Folder/File.txt
Run Code Online (Sandbox Code Playgroud)
gle*_*man 60
只是将一个字符串翻译成另一个字符串,tr是最好的工具:
tr '\\' '/'
Run Code Online (Sandbox Code Playgroud)
Emi*_*ggi 59
sed可以对来自文件或管道的输入流执行文本转换.例:
echo 'C:\foo\bar.xml' | sed 's/\\/\//g'
Run Code Online (Sandbox Code Playgroud)
得到
C:/foo/bar.xml
Run Code Online (Sandbox Code Playgroud)
Meh*_*dad 23
只需使用:
sed 's.\\./.g'
Run Code Online (Sandbox Code Playgroud)
没有理由/用作分隔符sed.但如果你真的想:
sed 's/\\/\//g'
Run Code Online (Sandbox Code Playgroud)
$ echo "C:\Windows\Folder\File.txt" | sed -e 's/\\/\//g'
C:/Windows/Folder/File.txt
Run Code Online (Sandbox Code Playgroud)
这种情况下的sed命令是's/OLD_TEXT/NEW_TEXT/g'.
领先的's'告诉它搜索OLD_TEXT并用NEW_TEXT替换它.
尾随'g'只是表示替换给定行上的所有事件,而不仅仅是第一行.
当然,你需要将's','g',旧的和新的彼此分开.这是您必须使用正斜杠作为分隔符的地方.
对于你的情况OLD_TEXT == '\'和NEW_TEXT == '/'.但是你不能只是在键入斜线并期望按照预期的方式工作,同时将它们用作分隔符.一般来说,斜杠非常特殊,必须按此处理.它们必须通过反斜杠"转义"(即先前).
所以对你,OLD_TEXT == '\\'和NEW_TEXT == '\/'.把这些放在's/OLD_TEXT/NEW_TEXT/g'你得到的范例中
's/\\/\//g'.读为
' s/ \\/ \// g',在转义后是
' s/ \/ // g',它将用正斜杠替换所有反斜杠.
如果您的文本位于Bash变量中,则参数替换${var//\\//}可以替换子字符串:
$ p='C:\foo\bar.xml'
$ printf '%s\n' "$p"
C:\foo\bar.xml
$ printf '%s\n' "${p//\\//}"
C:/foo/bar.xml
Run Code Online (Sandbox Code Playgroud)
通过诸如tr或之类的命令进行过滤可能更精确,更清晰sed.
| 归档时间: |
|
| 查看次数: |
87522 次 |
| 最近记录: |