1

Я делаю все это на Windows Vista 32 бит. Я использую sed.exe (версия GnuWin32 4.1.5.4013), помещенный в folder_b. В 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

Когда я щелкаю мышью по файлу летучей мыши, ничего не происходит. GeduWin32 версия Sed нуждается в S / ../../ записывается между двойными кавычками, как это ---> "s / ../../»

Это работает, только если я хочу добавить любое четное число двойных кавычек в конце каждой строки.

"s/$/\"/"---->Does not work 
"s/$/\"\"/"---->ok
"s/$/\"\"\"/"---->Does not work 
"s/$/\"\"\"\"/"---->ok

и так далее...

Как можно избежать одиночной двойной кавычки, используя версию sed gnuwin32?

2 ответа2

0

Я ничего не знаю о sed в Windows, но почему вы используете " в своем sed , а затем избегаете этих символов?

Вы не можете использовать это:

sed 's/$/"/'

Пример:

echo "This 
is
a
test" | sed 's/$/"/'
This"
is"
a"
test"

... но это все еще не объясняет это поведение. С GNU sed это также работает:

echo "This
is
a
test" | sed "s/$/\"/"
This"
is"
a"
test"
0

Хорошо, теперь мне удалось найти решение.

Если я напишу это в моем файле летучей мыши:

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

Это не работает !!

Так почему я могу только изменить на месте, а не создать новый файл?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .