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

Как добавить строку в определенном столбце в файле, который не является пробелом.

кошка file.txt

abc
defg
xy

Теперь я хочу добавить строку "тест? в столбце № 8 file.txt. Но столбец № 8 не является пробелом затем, как я могу добавить строку?

Это должно быть -

abc    test
defg   test
xy     test

Спасибо

---Vishal

1
задан 4 December 2018 в 21:07

3 ответа

Похоже, что Вы хотите распечатать первое поле, лево-выровненное по ширине в ширине поля 8:

$ awk -v s=test '{printf "%-8s%s\n", $1, s}' file.txt
abc     test
defg    test
xy      test
2
ответ дан 3 December 2019 в 06:50

Довольно быстрое и грязное использование решения paste, yes, и head:

paste file.txt <(yes test | head -n 3)
  • yes печатает бесконечные строки test
  • head получает просто первые три строки от yes
  • <(...) перенаправляет вывод ... в paste как входной файл
  • paste присоединяется к двум входным файлам вместе
1
ответ дан 3 December 2019 в 06:50

Используя sed команда должна помочь с этим:

sed -E 's/([[:alpha:]]*)/\1 \ttest/g' data.txt

Любое выполнение:

  1. И созданный резервное копирование:

    sed -i.bak -E 's/([[:alpha:]]*)/\1 \ttest/g' data.txt
    
  2. Перенаправление в другой файл:

    sed -E 's/([[:alpha:]]*)/\1 \ttest/g' data.txt > result.txt
    

Результаты:

abc     test
defg    test
xy      test

Информация:

  • ([[:alpha:]]): алфавиты получения
  • \1 \ttest: возвратите полученную группу и добавьте a tab и слово test
  • -E: Расширенная regex опция для мобильности.
1
ответ дан 3 December 2019 в 06:50

Другие вопросы по тегам:

Похожие вопросы: