Измените строку с помощью 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,00000 до 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 

благодаря

2 Solutions collect form web for “Измените строку с помощью sed”

в заключение

 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:~$ 

Надеюсь, поможет.

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

  sed 's/[^_]*/00001/3' <in >out 
  • Как заменить кавычки в файле с помощью sed?
  • Используя sed (?), Чтобы извлечь один экземпляр строки, которая повторяется в исходной строке
  • удалить строки файла из файла
  • sed - почему это не работает?
  • Найти все события в файле с sed
  • Sed - Как я могу вставить строку после определенной строки И какой-то символ?
  • конвертировать комментарии стиля C в стиль C ++ с помощью sed
  • Использование sed для удаления всего двух слов?
  • что означает: g означает это действие?
  • Сед не работает
  • Ошибка RE: операнд-оператор повторения недействителен
  • Interesting Posts

    USB-накопитель автоматически монтируется и размонтируется

    Как рекурсивно удалить все файлы и папки, кроме нескольких определенных папок?

    Установка MPFR предыдущих версий столкновения GMP

    Как сделать возвращаемое значение grep без запятой

    Как логический адрес одного процесса отличается от логического адреса другого?

    Использование памяти в SunOS и Linux

    Как показать конкретные строки из определенных столбцов файла

    Проблема с Fedora 20: открытие шлюза через терминал как не root

    $ v_result -ne 0 означает

    есть ли какие-либо причины, позволяющие непосредственно редактировать / etc / group

    Какие процессы меняют память

    Резервное копирование Bacula – Невозможно найти какие-либо дополнительные объемы

    Цветовая схема Vim не применяется

    Не удалось получить доступ к Интернету после того, как ip статично в beaglebone black

    bash если вопрос поведения инструкции

    Linux и Unix - лучшая ОС в мире.