2013-07-09 2 views
9

Мне часто приходится искать строки, содержащие несколько строк/паттернов в проекте git, например.Самый простой способ сделать «git grep» для нескольких строк?

git grep -i -e str1 --and -e str2 --and -e str3 -- *strings*txt 

Это очень утомительно.

Есть ли лучший способ сделать это?

+1

Может использовать TextExpander? –

+0

Это хорошая идея :) – PlagueHammer

ответ

2

Вы не указали, какую операционную систему вы используете, но если она похожа на Linux, вы можете написать сценарий «обертка». Создайте сценарий оболочки с именем git-grep1 и поместите его в каталог, который находится в вашем PATH, поэтому git может его найти. Затем вы можете ввести git grep1 param1 param2..., как если бы ваш скрипт был встроенной командой git.

Вот быстрый пример, чтобы вы начали:

# Example use: find C source files that contain "pattern" or "pat*rn" 
# $ git grep1 '*.c' pattern 'pat*rn' 

# Ensure we have at least 2 params: a file name and a pattern. 
[ -n "$2" ] || { echo "usage: $0 FILE_SPEC PATTERN..." >&2; exit 1; } 

file_spec="$1" # First argument is the file spec. 
shift 
pattern="-e $1" # Next argument is the first pattern. 
shift 

# Append all remaining patterns, separating them with '--and'. 
while [ -n "$1" ]; do 
    pattern="$pattern --and -e $1" 
    shift 
done 

# Find the patterns in the files. 
git grep -i "$pattern" -- "$file_spec" 

Вы, вероятно, придется поэкспериментировать с этим, например, может быть, заключая $file_spec и каждый шаблон в одинарные кавычки, чтобы предотвратить экспансию оболочка.

0

Если вы знаете относительный порядок строк, то вы можете сделать

git grep str1.*str2.*str3 -- *strings*txt 
Смежные вопросы