GnuWin32 sed не заменяет строки в файле - PullRequest
0 голосов
/ 01 февраля 2012

Я тестировал утилиту sed с txt-файлом с одной строкой

PJL COMMENT PREPRINTINFO : COPIES=1

Я использовал следующую схему, но не заменял строку в файле.но это не совсем линия.

H:\sed.exe -e "s/@PJL COMMENT PREPRINTINFO : COPIES=1/@PJL COMMENT
PREPRINTINFO : COPIES=2/g" H:\test.txt H:\test.txt

Пожалуйста, помогите.

Ответы [ 2 ]

0 голосов
/ 01 февраля 2012

Как указывает Tichodroma, в качестве разделителя регулярных выражений используйте либо «/», либо «@», а не оба. Когда вы добавляете '@' в строку цели поиска, она должна быть в файле, чтобы найти совпадение.

Что более важно, почему вы повторяете имя файла в конце sed cmd?

Либо хочешь

H:\sed.exe -e "s/PJL COMMENT PREPRINTINFO : COPIES=1/PJL COMMENT PREPRINTINFO : COPIES=2/g" H:\test.txt > H:\test2.txt

ИЛИ, если ваш sed поддерживает опцию -i,

H:\sed.exe -i "s/PJL COMMENT PREPRINTINFO : COPIES=1/PJL COMMENT PREPRINTINFO : COPIES=2/g" H:\test.txt

«g» в конце вашей команды означает «глобальный» и, вероятно, является избыточным, поэтому, чтобы сделать ваш код максимально эффективным, вы должны удалить его, если только вы не ожидаете, что одна строка текста будет содержать более одной строки. копия вашей цели поиска. Я оставил его на месте, так как вы, возможно, делаете с вашими файлами больше, чем указывает ваш вопрос.

Наконец, -e не добавляет много к команде sed, И это испортит использование, если -i.

Надеюсь, это поможет.

0 голосов
/ 01 февраля 2012

Что означает @?Не включайте их.

И не заменяйте файл сами по себе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...