我在 Windows Vista 32 位上执行所有这些操作。我使用放置在 folder_b 中的 sed.exe(GnuWin32 4.1.5.4013 版本)。在 folder_a 中,我有一个 file.txt,其中包含以下内容:
This
is
a
test
我想要的是这个:
This"
is"
a"
test"
在 folder_a 中我还有一个 .bat 文件,内容如下:
call "C:\Users\X\Desktop\folder_b\sed.exe" "s/$/\"/" file.txt >> newfilelist.txt
当我双击 bat 文件时什么也没有发生。GnuWin32 版本的 sed 需要将 s/../../ 写在双引号之间,像这样--->“s/../../”
仅当我想在每一行末尾添加偶数个双引号时它才有效。
"s/$/\"/"---->Does not work
"s/$/\"\"/"---->ok
"s/$/\"\"\"/"---->Does not work
"s/$/\"\"\"\"/"---->ok
等等...
如何使用 sed gnuwin32 版本转义单个双引号?
答案1
我对 Windows 一无所知,但为什么在你的中sed
使用,然后转义这些字符?"
sed
你不能使用这个吗:
sed 's/$/"/'
例子:
echo "This
is
a
test" | sed 's/$/"/'
This"
is"
a"
test"
...但这仍然不能解释这种行为。使用 GNUsed
也可以这样做:
echo "This
is
a
test" | sed "s/$/\"/"
This"
is"
a"
test"
答案2
好的,现在我已经找到了解决方案。
如果我在我的bat文件中写下这个:
call "C:\Users\X\Desktop\folder_b\sed.exe" -i "s/$/\"/" file.txt
现在它起作用了!!
但如果我这样写:
call "C:\Users\X\Desktop\folder_b\sed.exe" "s/$/\"/" file.txt >> filenew.txt
这是行不通的 !!
那么为什么我只能就地修改而不是创建新文件?