Как добавить строку в определенном столбце в файле, который не является пробелом.
кошка file.txt
abc
defg
xy
Теперь я хочу добавить строку "тест? в столбце № 8 file.txt. Но столбец № 8 не является пробелом затем, как я могу добавить строку?
Это должно быть -
abc test
defg test
xy test
Спасибо
---Vishal
Похоже, что Вы хотите распечатать первое поле, лево-выровненное по ширине в ширине поля 8:
$ awk -v s=test '{printf "%-8s%s\n", $1, s}' file.txt
abc test
defg test
xy test
Довольно быстрое и грязное использование решения paste
, yes
, и head
:
paste file.txt <(yes test | head -n 3)
yes
печатает бесконечные строки test
head
получает просто первые три строки от yes
<(...)
перенаправляет вывод ...
в paste
как входной файлpaste
присоединяется к двум входным файлам вместеИспользуя sed команда должна помочь с этим:
sed -E 's/([[:alpha:]]*)/\1 \ttest/g' data.txt
Любое выполнение:
И созданный резервное копирование:
sed -i.bak -E 's/([[:alpha:]]*)/\1 \ttest/g' data.txt
Перенаправление в другой файл:
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 опция для мобильности.