2015-02-23 6 views
1

Попытка СЭД из различных тегов из моего репозитория с оболочкой:Grep из теги мерзавца репо

git ls-remote --tags [email protected]:s1836/pro-ti.git | awk '{print $2}' 

возвратов, Как я могу Grep только различные теги, как v1, v2, v3, v4:

refs/tags/v1 
refs/tags/v1^{} 
refs/tags/v2 
refs/tags/v2^{} 
refs/tags/v3 
refs/tags/v3^{} 
refs/tags/v4 
refs/tags/v4^{} 

ответ

3

насчет старой доброй grep и uniq:

... | grep -o 'v[0-9]\+' | sort | uniq 
+1

Работает ли это, если мой тег - это номер v23? или это только между 0 и 9? – user3270211

+0

Хорошая точка. Добавлен квант '\ +'. – hek2mgl

+0

Спасибо, прост и понятен .. – user3270211

2

Вы можете трубы выше git команды в этом AWK:

git ls-remote --tags [email protected]:s1836/pro-ti.git | awk ' 
    {split($2,a,"[/^{]"); s[a[3]]} END{for (i in s) print i}' 
v1 
v2 
v3 
v4 
+0

Как бы вы удалить дубликаты значений? – user3270211

+1

Используйте один 'awk' -' git ls-remote --tags [email protected]: s1836/pro-ti.git | awk '{split ($ 2, a, "[/^{]"); print a [3]}' ' – Jotne

+0

Спасибо @ Jotne: Я добавил код для печати только уникальных версий. – anubhava

1

С GNU AWK для мульти-гольцов RS:

$ gawk -v RS='(\\^\\{\\})?\n' -F'/' '!seen[$NF]++{print $NF}' file 
v1 
v2 
v3 
v4 
+0

'awk -F '[/ ^]'' тоже будет работать , (возможно, проще) – hek2mgl

+0

Тогда вам нужно выяснить, какой номер поля вам нужен, так как он больше не будет $ NF. idk, если он всегда будет $ 3. Я также не знаю, может ли '^' появляться в другом месте ввода. –

+1

Хорошая точка! +1 для этого и '! Seen [$ NF] ++ ...' part. Ницца! :) – hek2mgl

Смежные вопросы