Как удалить все строки, которые не начинаются с определенных символов?
Мне нужно выяснить регулярное выражение, чтобы удалить все строки, которые не начинаются с "+" или "-".
Я хочу напечатать бумажную копию большого файла diff, но он показывает 5 или около того строк до и после фактического разброса.
Ответы
Ответ 1
В VIM:
:g!/^[+-]/d
Вот английский перевод:
g
lobally сделать что-то ко всем строкам, которые НЕ !
соответствуют регулярному выражению: начало строки ^
, за которым следуют либо +
, либо -
, и что-то делать нужно d
elete эти линии.
Ответ 2
sed -e '/^ [^ + -]/d'
Ответ 3
diff -u <some args here> | grep '^[+-]'
Или вы можете просто не создавать дополнительные строки вообще:
diff --unified=0 <some args>
Ответ 4
cat your_diff_file | sed '/^[+-]/!D'
Ответ 5
egrep "^[+-]" difffile >outputfile
Вместо удаления всего, что не соответствует, вы показываете только строки, которые соответствуют.:)
Ответ 6
Если вам нужно сделать что-то более сложное с точки зрения регулярных выражений, вы должны использовать этот сайт:
http://txt2re.com/
он также предоставляет примеры кода для разных языков.
Ответ 7
%!grep -Ev '^[+-]'
он встроен в текущий файл и может быть значительно быстрее, чем :v
для больших файлов.
Протестировано на Vim 7.4, Ubuntu 14.04, файл журнала линии 1M.
Линии, которые не содержат слова: https://superuser.com/info/265085/vim-delete-all-lines-that-do-not-contain-a-certain-word/1187212#1187212