Изменить строку с помощью sed

Изменить строку с помощью sed

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

FOO_AAAAA_00001
FOO_BBBBB_00001
FOO_ABABAB_0000
FOO_ABCCDAA_00
FOO_12345678_0
FOO_JJJ_00001
FOO_VLLLL_00001
FOO_KKAKAA_00001

Строка обрезается, когда длина превышает определенное число. Мне нужно изменить последнюю часть имени процесса для другого скрипта, который использует это имя. Проблема в том, что имена заканчиваются на 00001.

Я пробовал что-то вроде

[...]|sed 's/000/00001/g[...]

но проблема очевидна. Он также изменяет правильные строки. Мой вопрос в том, есть ли способ использовать sed, чтобы сделать изменение правильно, когда цепочка от 0,00,000 до 0001, не изменяя другие?

Предположим, у меня есть приведенный выше список:

FOO_AAAAA_00001
FOO_BBBBB_00001
FOO_ABABAB_0000
FOO_ABCCDAA_00
FOO_12345678_0
FOO_JJJ_00001
FOO_VLLLL_00001
FOO_KKAKAA_00001

Первый и последний верны. Мне нужно получить что-то вроде:

FOO_AAAAA_00001
FOO_BBBBB_00001
FOO_ABABAB_00001
FOO_ABCCDAA_00001
FOO_12345678_00001
FOO_JJJ_00001
FOO_VLLLL_00001
FOO_KKAKAA_00001

Спасибо

решение1

Это заменит третье вхождение в пространстве шаблонов максимально возможного совпадения на 0 или более символов, не являющихся подчеркиванием, для строки00001.

 sed 's/[^_]*/00001/3' <in >out

решение2

Окончательно

virt01@virt01:~$ sed 's/_0*$/_00001/g' some.txt
somestring_oooo_00001
somestring_oooo_00001
somestring_oooo_00001
virt01@virt01:~$

Именно для ваших данных

virt01@virt01:~$ cat some.txt
FOO_AAAAA_00001
FOO_BBBBB_00001
FOO_ABABAB_0000
FOO_ABCCDAA_00
FOO_12345678_0
FOO_JJJ_00001
FOO_VLLLL_00001
FOO_KKAKAA_00001
virt01@virt01:~$ sed 's/_0*$/_00001/g' some.txt
FOO_AAAAA_00001
FOO_BBBBB_00001
FOO_ABABAB_00001
FOO_ABCCDAA_00001
FOO_12345678_00001
FOO_JJJ_00001
FOO_VLLLL_00001
FOO_KKAKAA_00001
virt01@virt01:~$

Связанный контент