LINUX.ORG.RU

Работа с cvs log - удаление ненужных строчек


0

1

есть cvs log:


RCS file: /cygdrive/e/Repository/project1/Readme.txt,v
Working file: Readme.txt
head: 1.3
branch:
locks: strict
access list:
symbolic names:
rel-0-4: 1.3
Releze-1: 1.1.1.1
bender: 1.1.1
keyword substitution: kv
description:
----------------------------
revision 1.3
date: 2014-11-14 13:14:49 +0400; author: Kronos; state: Exp; lines: +2 -0; commitid: aD6iAFk03c9Hi8Yx;
Добавили Город
=============================================================================

,из него надо удалить ненужное: а именно - все, кроме:
Working file: Readme.txt
revision 1.3
date: 2014-11-14 13:14:49 +0400; author: Kronos
Добавили Город

P.S. файл не один, за одну команду надо обработать все ненужные строки, у меня пока получается пока так:
cvs log -rrel-0-4 | grep -a3 "revision "| grep -v "total" | sed -e 's/\(^.*\)\(Kronos;\).*/\1\2/';
а вот чтобы сделать что то вроде grep -b «Work» или grep «Work» чтобы добавлялся Working file перед каждым revision-ом, что то не получается...

grep сюда не очень походит, есть sed, awk, perl.

cvs log -rrel-0-4 | sed -n -e '/^Working file:/p' -e '/^revision /{p;n;p;n;p};'

mky ★★★★★
()
$ echo "Working file: Readme.txt
head: 1.3
branch:
locks: strict
access list:
symbolic names:
rel-0-4: 1.3
Releze-1: 1.1.1.1
bender: 1.1.1
keyword substitution: kv
description:
----------------------------
revision 1.3
date: 2014-11-14 13:14:49 +0400; author: Kronos; state: Exp; lines: +2 -0; commitid: aD6iAFk03c9Hi8Yx;"|sed -rn '/^(Working file:|revision)/p;/^date:/{s/;/&\n/2;s/\n.*//p}'
Working file: Readme.txt
revision 1.3
date: 2014-11-14 13:14:49 +0400; author: Kronos;
emulek
()
Ответ на: комментарий от emulek

команда без мусора

sed -rn '/^(Working file:|revision)/p;/^date:/{s/;/&\n/2;s/\n.*//p}'
emulek
()

есть cvs log

15.11.2014

maxcom, у тебя машина времени сломалась

INFOMAN ★★★★★
()
Ответ на: комментарий от Kronos004

Там всё просто. Опция ″-n″ отключает печать строк, соответственно, выводим только те строки, на которые будет дана команда ″p″. Ну, а команда ″n″ читает следующую строку, таким образом ″p;n;p;n;p″ распечатает строку, совпавшую с регулярным выражением и две после неё (аналог ″grep -A 2″)

Можете почитать однострочники http://ant0.ru/sed1line.html и попытаться понять, как какой работает.

mky ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.