URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 85009
[ Назад ]

Исходное сообщение
"подскажите с sed или awk"

Отправлено Антон , 22-Апр-09 17:48 
есть файл с множеством строк вида

XCXC434-zas;zzzMN000034535
XCXC434-zas;zzzMN3534535
XCXC434-zas;zzzMN067034535


подскажите пожалуйста, как удалить все до MN

т.е чтобы осталось
MN000034535
MN3534535
MN067034535

все перепробовал не получается

заранее благодарен


Содержание

Сообщения в этом обсуждении
"подскажите с sed или awk"
Отправлено tiv , 22-Апр-09 19:11 
используйте для awk в качестве разделителя zzz если все строки такие как вы привели, примерно так
cat file  | awk -F'zzz' '{print $2}' > new_file

"подскажите с sed или awk"
Отправлено Eddy , 22-Апр-09 19:57 
sed "s/\(.*\)zzz\(MN.*\)/\2/" < file > new_file

"подскажите с sed или awk"
Отправлено angra , 22-Апр-09 23:29 
Удаление всего до последнего(или единственного) MN
sed -e 's/^.*MN/MN/'
Если же MN может встретится больше чем один раз и нужно удалить до первого, то придется ограничить жадность *. Чтобы не возится с версиями и опциями sed воспользуемся perl
perl -pe 's/^.*?MN/MN/'
Вариант для awk если всего один раз MN
awk -F 'MN' '{print "MN"$2}'

Как легко заметить ни один из вариантов не использует зависимость от zzz

P.S. у perl и sed есть замечательный ключ i, который позволяет редактировать файл не порождая извратов типа <old >new