Регулярное выражение, чтобы найти строку, содержащую определенные символы и удалить эту строку - PullRequest
5 голосов
/ 04 февраля 2009

У меня есть текстовый файл, в котором много строк символов одна строка за другой. Я хочу найти все строки, которые начинаются с :: и удалить все эти строки.

Какое регулярное выражение для этого?

-AD

Ответы [ 7 ]

8 голосов
/ 04 февраля 2009

Регулярные выражения ничего не делают. Они соответствуют только тексту.

Вам нужны инструменты, которые используют регулярные выражения для идентификации строки, а затем применяют некоторые команды к этим инструментам.

Один из таких инструментов - sed (есть также awk и многие другие). Вы бы использовали это так:

sed -e "/^::/d" < input.txt > output.txt

Часть "/^::/" говорит sed применить следующую команду ко всем строкам, которые начинаются с "::" и "d" просто означает "удалить эту строку".

Или самое простое решение (которое мой мозг не дал по какой-то странной причине):

grep -v "^::" input.txt > output.txt
2 голосов
/ 04 февраля 2009
sed -i -e '/^::/d' yourfile.txt
1 голос
/ 04 февраля 2009
^::.*[\r\n]*

Если вы читаете файл построчно, вам не понадобится часть [\r\n]*.

0 голосов
/ 05 февраля 2009

Вот мой вклад в C #:

Текстовый поток:

string stream = :: This is a comment line

Синтаксис:

Regex commentsExp = new Regex("^::.*", RegexOptions.Singleline);

Использование:

Console.WriteLine(commentsExp.Replace(stream, string.Empty));

В качестве альтернативы, если бы я хотел просто взять текстовый файл с комментариями и создать точную копию без строк комментариев, я мог бы использовать простое, но эффективное сочетание инструментов командной строки type и findstr:

type commented.txt | findstr /v /R "^::" > uncommented.txt
0 голосов
/ 04 февраля 2009

Спасибо за указатели:

Следующая вещь работала для меня. После " :: " возможно, любой символ присутствовал в текстовом файле, поэтому я дал:

^ :: [a-zA-Z0-9 Я поставил здесь все знаки препинания] * $

-AD

0 голосов
/ 04 февраля 2009

Если у вас нет sed или grep, найдите это и замените пустой строкой:

^::.*[\r\n]
0 голосов
/ 04 февраля 2009

Простой как:

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