Удалить строку с условием - PullRequest
1 голос
/ 09 марта 2012
ALTER TABLE variable ADD KEY somekey name

Я хочу удалить строку из текстового файла, и упомянутый ниже sed работает как положено.

sed '/ADD\ KEY/d' 

Но возможно, что слово "ADD KEY" может быть где-то еще втекстовый файл, и я не хочу удалять эту строку.

Как удалить все строки «ДОБАВИТЬ КЛЮЧ» только в том случае, если он начинается со слова «ALTER TABLE»?

Ответы [ 3 ]

1 голос
/ 09 марта 2012
 sed '/ALTER TABLE .* ADD KEY .*/d' FILE 

должен сделать работу также. Кстати, вам не нужно маскировать пробел.

1 голос
/ 09 марта 2012

Вам необходимо отредактировать регулярное выражение, чтобы оно соответствовало строке, начинающейся, как вам нужно, то есть:

sed '/^ALTER\ TABLE.*ADD\ KEY/d'

, которая
- строка, начинающаяся с "ALTER TABLE"
-, за которой следует 0или больше «что-нибудь»
- с последующим «ADD KEY»

1 голос
/ 09 марта 2012

do:

sed '/^ALTER TABLE/{/ADD\ KEY/d}'

Сначала /^ALTER TABLE/ проверяет строки, начинающиеся с ALTER TABLE, а затем переходит к /ADD\ KEY/d, если это так.

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