У меня есть следующий список, который я хочу разбить на цифру. Например:
From:
103Ru
103mRh
104
1041
From:
103
Ru
103
mRh
104
1041
Я хотел бы использовать Regx с sed или возможно, awk, чтобы достичь этого результата. Но большинство моих подходов не удалось. Мне нужен совет или, возможно, какое-то решение. Спасибо
Вот еще два варианта:
grepgrep -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] просто печатает строку.