Как использовать sed для возврата чего-то из первой строки, которая соответствует и выход рано?

ACCU mags, Перегрузка и C-Vu.

мне нравится Журнал Разработчиков игр, но начиная с ect больше не работает, я больше не получаю свободные anymore:-(

9
задан Community 23 May 2017 в 12:08
поделиться

3 ответа

Моим конкретным вариантом использования было выяснить через 'git log' в импортированном дереве git-p4, какая ветвь perforce использовалась для последней фиксации. git log (при вызове без -n будет регистрировать каждую произошедшую фиксацию (для меня сотни тысяч)).

Мы не можем заранее знать, какое значение дать git для '-n'. После публикации я нашел свое решение:

git log | sed -n '0,/.*\[git-p4:.*\/\/depot\/blah\/\([^\/]*\)\/.*/s//\1/p; /\[git-p4/ q' 

Я все еще хотел бы знать, как это сделать с разделителем, отличным от '/', и без необходимости указывать часть 'git-p4' дважды, один раз для извлечение и один раз для выхода. Должен быть способ объединить и то, и другое на одной линии ...

2
ответ дан 4 December 2019 в 15:21
поделиться

Sed обычно имеет возможность указать более одного шаблона для выполнения (IIRC, это параметр -e ). Таким образом, вы можете указать второй шаблон, который завершается после первой строки.

Другой подход - использовать sed для извлечения первой строки ( sed '1q' ), затем передайте это второй команде sed (то, что вы показываете выше).

1
ответ дан 4 December 2019 в 15:21
поделиться

используйте gawk

gawk '/MATCH/{
            print "do something with "$0
            exit 
}' file
1
ответ дан 4 December 2019 в 15:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: