LINUX.ORG.RU

Удалить все символы в каждой строке с помощью регулярок

 


0

2

Есть список на 30 тысяч строк с кучей сериалов и их сезонов. Сезон обозначен как SE.

Задача - удалить все символы, кроме номера сезона. В случае, если номера сезона нет - оставить перенос строк. Задача решается легко если удалить все буквы, но в названии сериалов также фигурируют цифры, так что после этого они сольются в одно.

Leavenworth SE01
The Morning Show SE01
3rd Rock from the Sun SE01
Survivor SE040
Siren

Задача решается легко

Согласен.

anonymous
()

из этого

Leavenworth SE01
The Morning Show SE01
3rd Rock from the Sun SE01
Survivor SE040
Siren

получить это?

SE01
SE01
SE01
SE040

nerve ★★
()

Странные обозначения у тебя. Обычно сезон - S, а серия (эпизод) - E. А SE это типо SEason чтоли? :)

Если принять за правило, что номер сезона с обозначением SE всегда последний столбец, то

echo -e 'Leavenworth SE01\nThe Morning Show SE01\n3rd Rock from the Sun SE01\nSurvivor SE040\nSiren' | awk -F '(SE)|( +)' '{print $NF}' | sed -r 's/[0-9]*[^0-9]+[0-9]*//g'
01
01
01
040

TalkingMudcrab
()
Последнее исправление: TalkingMudcrab (всего исправлений: 2)
Ответ на: комментарий от TalkingMudcrab

Огромное спасибо! Сработало как надо. Проблема решена.

ушёл учить awk и sed

Mamin_simpotyaga
() автор топика
Ответ на: комментарий от anonymous

pcre

Perl Compatible Regular Expressions

Что только не придумают, чтобы не использовать перл

perl -nle 'print $1 if /SE(\d+)/'
anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.