Использование Regex Разрыв текста на последней цифре с использованием инструментов linux, таких как sed, или awk

У меня есть следующий список, который я хочу разбить на цифру. Например:

From:

103Ru
103mRh
104
1041

From:

103
Ru
103
mRh
104
1041

Я хотел бы использовать Regx с sed или возможно, awk, чтобы достичь этого результата. Но большинство моих подходов не удалось. Мне нужен совет или, возможно, какое-то решение. Спасибо

1
задан 28 March 2014 в 02:07

1 ответ

Вот еще два варианта:

grep
grep -oP '\d+|.*' file
Объяснение: -P: активирует регулярные выражения Perl Compatible Regular, которые позволяют нам использовать \d для цифр. Символ |, логический OR, означает, что grep сначала попытается сопоставить одну или несколько (+) цифр, а затем все остальное (.*). -o: Это приводит к тому, что grep печатает только соответствующую часть входной строки. Побочным эффектом является то, что если строка имеет несколько совпадений, она будет печатать каждую из них на новой строке, чтобы она выдавала желаемый результат. Perl
perl -lne 's/(\d+)(\D+)/$1\n$2/; print;' file
Объяснение: -n означает, читайте файл по строкам и применяйте сценарий, заданный -e для каждой строки. -l i) удаляет новые строки (\n) с конца строки и ii) добавляет \n к каждому print. s/pattern/replacement/: заменяет pattern на replacement. (\d+)(\D+): сопоставить одну или несколько цифр (\d), за которой следует одна или несколько цифр (\D). Скобки () означают совпадение совпадений, поэтому мы можем ссылаться на них как $1 и $2. Взятые вместе, подстановка просто вставляет новую строку между строкой цифр и следующими не цифрами. [F28] просто печатает строку.
3
ответ дан 24 May 2018 в 10:20

Другие вопросы по тегам:

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