无法使用 sed 在每行末尾添加单双引号

无法使用 sed 在每行末尾添加单双引号

我在 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

这是行不通的 !!

那么为什么我只能就地修改而不是创建新文件?

相关内容