Заменить шаблон в определенном столбце в sed

У меня есть файл вкладки с двумя столбцами, как показано ниже.

BB_12  100_AA
BB_13  101_AB 
BB_14  102_AD
BB_15  103_AC

Я хочу удалить число_ во втором столбце (заменить число_ ничем). Для этого я безуспешно пытался заменить sed следующими способами.

sed 's/\d+\_//g' infile
sed 's/(\d+\_)//g' infile

Но ни одна из настроек не сработала. Похоже, он не ищет во 2-м столбце. Как изменить это? Ожидаемый результат

BB_12  AA
BB_13  AB 
BB_14  AD
BB_15  AC

Заранее спасибо.


person Arun    schedule 22.01.2018    source источник
comment
sed не поддерживает \d.. для операций, связанных со столбцами, рассмотрите возможность использования awk   -  person Sundeep    schedule 22.01.2018


Ответы (2)


Вы можете просто обработать последний столбец с помощью sed:

sed -E 's/[^ ]*_([^ ]*) *$/\1/' file

Выход:

BB_12  AA
BB_13  AB
BB_14  AD
BB_15  AC

Awk альтернатива:

awk '{ sub(/^[^ ]+_/, "", $2) }1' OFS='\t' file
person RomanPerekhrest    schedule 22.01.2018

Следование простым sed может помочь вам в этом.

sed 's/\([^ ]*\) \([^_]*\)_\(.*\)/\1 \3/g'   Input_file

Вывод будет следующим.

BB_12 AA
BB_13 AB
BB_14 AD
BB_15 AC
person RavinderSingh13    schedule 22.01.2018
comment
Обратные ссылки здесь на самом деле не нужны и чрезвычайно усложняют выражение. Просто замените вкладку, за которой следуют цифры и знак подчеркивания, просто на вкладку. s/ [0-9][0-9]*_/ / - person tripleee; 22.01.2018