2016-07-04 3 views
-2

Если вы хотите удалить неправильную карету, возвращайте «CRLF» в файл, но сохраните правильные. Я думаю, что у меня есть какая-то логика, которая будет работать, но не может полностью подделать скрипт.Пакетный файл Windows для замены строк

где^р представляет собой «возврат каретки»

Заменить Да^р с yestemp
Заменить Нет^р с notemp
Заменить неактивного^р с inactivetemp
Replace^р с «» (то есть нуль)
Заменить Yestemp с Да^р
Заменить notempwith Нет^р
Заменить inactivetemp с неактивной^р

+1

Вы действительно нуждаетесь в этом для DOS? Не Windows случайно? – Joey

+0

У меня такой же вопрос, как у Джо. Кроме того, ваш язык несовместим, ваш заголовок говорит о фиде линии (байт-код 10, hex 0x0A). Вы ссылаетесь на '^ p' как на представление« возврат каретки »(байт-код 13, hex 0x0D). И ваше первое предложение говорит о возврате каретки как «CRLF», что является общей сокращением комбинации возврата каретки и линии, используемой Windows (и DOS) в качестве терминаторов линий. Итак, что именно вы действительно пытаетесь сделать? – dbenham

+0

Кроме того, вы действительно хотите сохранить '^ p' (все, что должно представлять) после слов« Да »,« Нет »и« Неактивно », и удалить остальные? Или эти слова стоят за что-то еще? – dbenham

ответ

0

Я полагаю, вы могли бы сделайте это с чистой нативной партией, но это будет очень болезненно и, вероятно, очень медленным.

Это тривиально, используя JREPL.BAT - a hybrid JScript/batch regular expression find/replace utility. Это чистый скрипт, который запускается изначально на любой Windows-машине с XP дальше - не требуется сторонних файлов exe. Полная документация встроена в утилиту, доступ к которой осуществляется через jrepl /?, или jrepl /?? для выгружаемого вывода.

Растворы ниже, основаны на спецификации от вашего комментария:

BlockquoteThe текстовый файл содержит как LF и значения CRLF. Строки, которые я хочу сохранить, это YesLF и NoLF. Я хотел бы, чтобы удалить все другие LF и CRLF строки

Вот решение, используя /T вариант

jrepl "(Yes|No)\n:\r?\n" "$&:" /t ":" /m /f "yourFile.txt" /o - 

И здесь есть решение, используя /J вариант с небольшим количеством пользователей поставляемого JScript

jrepl "((Yes|No)(?=\n))?\r?\n" "$1?$0:''" /j /m /f "yourFile.txt" /o - 
+0

Отлично. Благодаря! –

+1

@DavidAnton - Спасибо, хорошо, но правильный способ сделать это на этом сайте - принять ответ, который полностью отвечает на ваш вопрос, нажав на галочку возле левого верхнего угла. Это награждает ответный постер на 15 пунктов, и вы, вопрошающий, получаете 2 репрезентации за то, что нашли время, чтобы принять ответ. Может быть принят только один вопрос. Как только вы достигнете 15 очков репутаций, вы получите возможность проголосовать за любой ответ, который вам пригодится, который наносит 10 баллов на плакат ответа. Вы можете проголосовать столько ответов, сколько хотите, даже ответы на вопросы других людей. – dbenham

Смежные вопросы