Я делаю svn status --show-updates
а затем я хочу либо
?
*
Обратите внимание, что перед * существует несколько пробелов. Это означает, что *
не является первым символом на линии. Как я могу это сделать?
Вы можете выразить эти условия с использованием регулярных выражений и использовать grep
для фильтрации результатов на основе этих.
Первый – ^?
, Карат – это особый символ, который представляет начало линии; так что выражение соответствует началу строки, за которой следует a ?
,
Второй – ^ *\*
. *
– специальный символ, который квалифицирует предыдущий символ – это означает, что предыдущий символ может появляться в ноль или более раз. Поскольку *
– специальный символ, тот, который вы ищете, должен быть экранирован, следовательно, \*
. Таким образом, это выражение будет соответствовать началу строки, за которой следует ноль или больше пробелов, а затем звездочка.
Для вашего первого условия используйте параметр -v
для grep
для отрицания результатов.
Итак, наконец,
svn status --show-updates | grep -v '^?'
или
svn status --show-updates | grep '^ *\*'
Регулярные выражения очень мощные, поэтому многие инструменты Unix могут их использовать. Они очень ценятся. На regular-expressions.info есть отличный учебник.
Q1: Простой способ заключается в следующем:
svn st --show-updates -q
st – аббревиатура для статуса и -q для тишины: это исключает файлы, которые еще не добавлены в репозиторий.
Q2: если вы не назвали свои файлы с помощью *, вы также можете сделать это:
svn status --show_updates|grep -v \*