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