我希望能够使用sed来获取输入,例如:
C:\Windows\Folder\File.txt
至
C:/Windows/Folder/File.txt
hfyxw5xn1#
sed可以对来自文件或管道的输入流执行文本转换。示例:
sed
echo 'C:\foo\bar.xml' | sed 's/\\/\//g'
输出:
C:/foo/bar.xml
gijlo24d2#
如果只是将字符串中的一个字符转换为另一个字符,tr是最好的工具:
tr
tr '\\' '/'
w1e3prcc3#
只需使用:
sed 's.\\./.g'
没有理由在sed中使用/作为分隔符。但是如果你真的想:
/
sed 's/\\/\//g'
7cwmlq894#
如果文本位于Bash变量中,则参数替换${var//\\//}可以替换子字符串:
${var//\\//}
$ p='C:\foo\bar.xml' $ printf '%s\n' "$p" C:\foo\bar.xml $ printf '%s\n' "${p//\\//}" C:/foo/bar.xml
与通过诸如tr或sed之类的命令进行过滤相比,这可能更精简、更清晰。
nwlqm0z15#
$ echo "C:\Windows\Folder\File.txt" | sed -e 's/\\/\//g' C:/Windows/Folder/File.txt
本例中的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',它将用正斜杠替换所有反斜杠。
's/OLD_TEXT/NEW_TEXT/g'
OLD_TEXT == '\'
NEW_TEXT == '/'
OLD_TEXT == '\\'
NEW_TEXT == '\/'
's/\\/\//g'
s
\\
\/
g
\
c9qzyr3d6#
这可能对您有用:
sed 'y/\\/\//'
rpppsulh7#
对我来说,这将一个反斜杠替换为一个正斜杠。
sed -e "s/\\\\/\//" file.txt
nkoocmlb8#
你可以试试
sed 's:\\:\/:g'`
第一个\用于插入输入,第二个\将是您要替换的输入。因此,“:“第一个斜杠“\”第二个斜杠“\”“:““\”将输入“/”作为新斜杠插入,该新斜杠将显示为“:“g”
\\ \/
就这样。它会成功的。
7rfyedvj9#
我必须使用[\\]或[/]才能使这个工作,顺便说一句。awk '!/[\\]/' file > temp && mv temp file和awk '!/[/]/' file > temp && mv temp file我使用awk从列表中删除反斜杠和正斜杠。
[\\]
[/]
awk '!/[\\]/' file > temp && mv temp file
awk '!/[/]/' file > temp && mv temp file
9条答案
按热度按时间hfyxw5xn1#
sed
可以对来自文件或管道的输入流执行文本转换。示例:输出:
gijlo24d2#
如果只是将字符串中的一个字符转换为另一个字符,
tr
是最好的工具:w1e3prcc3#
只需使用:
没有理由在
sed
中使用/
作为分隔符。但是如果你真的想:7cwmlq894#
如果文本位于Bash变量中,则参数替换
${var//\\//}
可以替换子字符串:与通过诸如
tr
或sed
之类的命令进行过滤相比,这可能更精简、更清晰。nwlqm0z15#
本例中的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
',它将用正斜杠替换所有反斜杠。c9qzyr3d6#
这可能对您有用:
rpppsulh7#
对我来说,这将一个反斜杠替换为一个正斜杠。
nkoocmlb8#
你可以试试
第一个
\
用于插入输入,第二个\
将是您要替换的输入。因此,“:“第一个斜杠“\”第二个斜杠“\”“:““\”将输入“/”作为新斜杠插入,该新斜杠将显示为“:“g”
就这样。它会成功的。
7rfyedvj9#
我必须使用
[\\]
或[/]
才能使这个工作,顺便说一句。awk '!/[\\]/' file > temp && mv temp file
和
awk '!/[/]/' file > temp && mv temp file
我使用awk从列表中删除反斜杠和正斜杠。