Инструмент grep
имеет опцию -v
, которая меняет смысл фильтра. Например:
grep -v pax people
выдаст вам все строки в файле people
, которые не содержат pax
.
Пример:
grep -v '^ *-- ' oldfile >newfile
, который избавляется от строк с единственным пробелом перед маркером комментария. Это не будет однако изменяет строки как:
select blah blah -- comment here.
Если бы вы хотели это сделать, вы бы использовали что-то вроде sed
:
sed -e 's/ --.*$//' oldfile >newfile
, которая редактирует каждую строку, удаляя любые символы от " --"
до конца строки.
Имейте в виду, что вам нужно быть осторожным с поиском строки " --"
в real SQL-выражениях, таких как (надуманные):
select ' -- ' | colm from blah blah blah
Если они у вас есть, лучше создать / использовать синтаксический анализатор SQL, а не простой инструмент для модификации текста.
Стенограмма sed
в действии:
pax$ echo '
...> this is a line with -- on it.
...> this is not
...> and -- this is again' | sed -e 's/ --.*$//'
this is a line with
this is not
and
Для grep
:
pax$ echo '
-- this line starts with it.
this line does not
and -- this one is not at the start' | grep -v '^ *-- '
this line does not
and -- this one is not at the start