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

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

FSDFDSFSD FDSFD FHGDHFDHGHFGHGHGF HHGDF GFDGDFGFDG GFDGFDGFDGDFGDGD 

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

  • Как использовать Sed для замены всех символов перед двоеточием?
  • Извлечение n символов из тестовой линии
  • sed с опцией -n и '$ ='
  • Сед обратит два слова
  • sed и действовать на x строк после
  • sed несколько записей в одной команде для удаления данных
  • Я хочу, чтобы

     FSDFDSFSD0000000000 FDSFD FHGDHFDHGHFGHGHGF00 HHGDF GFDGDFGFDG000000000 GFDGFDGFDGDFGDGD 

  • sed: удалить все вхождения строки, кроме первой
  • Извлечение n символов из тестовой линии
  • SED: вставить текст после последней строки?
  • Чистая замена всех вхождений двух строк с помощью sed
  • sed строка не соответствует. Зачем?
  • Как команда sed '1! G; h; $! D' отбрасывает содержимое файла?
  • 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 символов.

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