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