Как удалить все строки, которые не начинаются с определенных символов?
Мне нужно выяснить регулярное выражение, чтобы удалить все строки, которые не начинаются с "+" или "-".
Я хочу напечатать бумажную копию большого файла 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.