Измените строку с помощью 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
  • Добавьте ведущие нули, пока все строки перед запятой не состоят из девяти символов и затем вставьте символ каждые три цифры, используя sed
  • Извлечь часть одной строки из файла с помощью sed
  • Sed для печати только первого соответствия шаблону линии
  • Как использовать Sed для замены всех символов перед двоеточием?
  • Что это за команда sed?
  • Interesting Posts

    Импорт априорной ОС zsh в Манджаро

    Измените адрес прослушивания на IPv4 с IPv6

    Сценарий Ed работает только в том случае, если набирается медленно

    Является ли какая-либо часть программного обеспечения X.org многопоточной?

    Замена последних символов после последней запятой на строку

    Поставьте систему в режим низкого энергопотребления в режиме ожидания

    Передача нескольких varibles скрипту для SQL-запроса

    Как экспортировать LD_LIBRARY_PATH всем пользователям и системным службам

    Мое WLAN-соединение скрыто, даже широковещательная передача включена

    Понимание карты памяти SPL и U-Boot с использованием bdinfo?

    Могу ли я использовать свой оригинальный ключ GPG, хотя я снова установил Linux?

    Сценарий с задержкой записи

    Как переопределить rw-r-r-root / wheel для всех файлов в каталоге?

    С упадком Dropbox для Linux, есть ли альтернативные клиенты?

    Debian: порядок DNS-серверов при использовании VPN

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