Ваш вопрос немного не указан, но вот краткое решение с использованием sed (вы сказали sed, верно? ;-))
input='/path/to/file/14561234545_50303.TXT'
section=`basename $input | sed 's/^1\([^_]\+\).*/\1/'`
Разъяснение:
- вытащить имя файла с basename (я думаю, вам нужно выполнить извлечение только на части имени файла)
- выполнить Sed Match следующим образом:
^1
: соответствует 1 в начале строки (опять же, догадка, адаптируйтесь по своему вкусу)
\( [^_]\+ \)
: (пробелы добавлены для ясности) соответствуют последовательности из одного или нескольких ( \+
) символов, которые не соответствуют подчеркиванию, и сохраните эту последовательность в \1
.*
: сопоставить все остальное, что следует (начиная с подчеркивания _
если ваш ввод правильно сформирован)
- замените сопоставленный текст (который является всей строкой, если ваш ввод правильно сформирован!) с последовательностью символов подчеркивания, которая была извлечена в шаге 2.2
Вы действительно должны включить .*
В конце матча, чтобы использовать оставшуюся часть ввода. Если вы этого не сделаете, замена на шаге 3 будет действовать только на часть строки, ведущую к подчеркиванию, и вы будете удивлены, обнаружив, что ваш вывод почти идентичен вводу, за исключением 1
.