Как заполнять символы только в sed

У меня есть этот файл. Я хочу использовать только sed, no awk

FSDFDSFSD FDSFD FHGDHFDHGHFGHGHGF HHGDF GFDGDFGFDG GFDGFDGFDGDFGDGD 

Я хочу заполнить каждую нечетную строку, добавленную до 000, так что общее число символов равно 30 в каждой строке

Я хочу, чтобы

 FSDFDSFSD0000000000 FDSFD FHGDHFDHGHFGHGHGF00 HHGDF GFDGDFGFDG000000000 GFDGFDGFDGDFGDGD 

  • Использование sed один раз для поиска / замены разных строк
  • Матч косой черты в ббе
  • Что делает :: делает в скрипте sed
  • Перевод с помощью команды sed
  • Как удалить несколько случайных строк из текстового файла с помощью sed?
  • заместитель char-to-char с sed
  • Как разделить длинное выражение sed на несколько строк?
  • sed replace - нужна помощь в замене текста в кучке файлов
  • 2 Solutions collect form web for “Как заполнять символы только в sed”

    В одну сторону:

     sed -e :a -e 's/^.\{1,29\}$/&0/;ta' -en file 

    Соответствует любому символу (.) И соответствует от 1 до 29 символов одного типа (1,29). Если совпадение выполнено успешно, поставьте «0» за шаблон, сопоставленный ( & ). Когда совпадение заканчивается, это означает, что если количество символов, исключающих первый символ, превышает 29, остановите его, и, следовательно, мы получим нулевую строку с шагом 30.

    n в конце просто читает следующую строку и печатает ее. Таким образом, четные строки печатаются нетронутыми.

    Выполнение вышеуказанного скрипта:

     $ sed -e :a -e 's/^.\{1,29\}$/&0/;ta' -en file FSDFDSFSD000000000000000000000 FDSFD FHGDHFDHGHFGHGHGF0000000000000 HHGDF GFDGDFGFDG00000000000000000000 GFDGFDGFDGDFGDGD 

    Другой подход:

     sed 's/$/000000000000000000000000000000/;s/\(.\{30\}\).*/\1/;n' 

    Это будет быстрее, чем итеративный подход при добавлении одного символа за раз, но обратите внимание, что он урезает линии, длина которых превышает 30 символов.

    Interesting Posts

    Добавление значений столбца с одинаковым идентификатором данных?

    Разделить двоичные данные фиксированного байтового смещения по байтовой позиции?

    Минус и Плюс Вход в систему

    Нужно ли беспокоиться о «хвосте: непризнанная файловая система типа 0xbeefdead»?

    Linux Mint 17.1 не будет загружаться после обновления BIOS

    Какова актуальность этих предложений о завершении bash?

    bash – нечувствительность к регистру переменной

    Как я могу запустить функцию блокировки заставки с помощью D-BUS из командной строки?

    как войти с помощью ssh с паролем?

    Отображение доступа из сетевого пространства имен

    Каков канонический способ найти фактическую максимальную длину списка аргументов?

    Совместное использование интерфейса loopback через сетевые пространства имен

    ~ / .bash_profile выполняется для не-регистрационных оболочек

    Что делает в выражении V = s?

    Адаптер Ethernet к USB не инициализирован как устройство ttyACM

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