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

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

FSDFDSFSD FDSFD FHGDHFDHGHFGHGHGF HHGDF GFDGDFGFDG GFDGFDGFDGDFGDGD 

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

Я хочу, чтобы

 FSDFDSFSD0000000000 FDSFD FHGDHFDHGHFGHGHGF00 HHGDF GFDGDFGFDG000000000 GFDGFDGFDGDFGDGD 

  • Как я могу использовать переменные при выполнении sed?
  • Заменить произвольные числа слова
  • Как заменить символ в группе захвата с помощью sed
  • sed - как обращаться к внешнему совпадению изнутри блока?
  • удалите строки с sed, которые следуют определенной строке
  • (In) формальные (и более доступные для поиска) мнемоники для стандартных команд `sed`?
  • SED Использование правильно изменить линию
  • Как работает sed 's / / \ / g'
  • 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

    Загрузка нескольких похожих URL-адресов с использованием скобок

    LUKS: изменить мастер-ключ

    Как может плохой старый пользователь, не являющийся пользователем root, получить систему отвалов ядра?

    Как я могу определить вариант Unix / Linux из оболочки?

    Как изменить размер экстента в файловой системе ext4?

    «Нет такого файла» с ksh, но скрипт работает с ksh -x?

    Переключатель рабочего места заморожен не может выбрать рабочее пространство

    Попытка сортировать по двум полям, затем сначала

    файл соответствует / proc / locks

    Gparted Показывает жесткий диск как нераспределенный

    Можно ли клонировать только часть проекта git?

    Как восстановить RAID-массив Intel 0 в распределении кластера Rocks

    Как найти 32-битные библиотеки в 64-разрядной Linux и удалить их?

    Xorg Dualhead карты клавиатуры и мыши ввода только на конкретный экран

    Удаленный корневой каталог GRUB. Как переустановить grub?

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