Я работаю над сценарием bash, который будет разбивать содержимое текстового документа в зависимости от данных в строке.
Если содержимое исходного файла было в соответствии с
01 line
01 line
02 line
02 line
Как я могу вставить в строку 3 этого файла, используя bash, чтобы привести к
01 line
01 line
text to insert
02 line
02 line
Я надеюсь сделать это, используя heredoc или что-то подобное в моем скрипте
#!/bin/bash
vim -e -s ./file.txt <<- HEREDOC
:3 | startinsert | "text to insert\n"
:update
:quit
HEREDOC
Выше не работает, конечно, но какие-либо рекомендации, которые я мог бы реализовать в этом скрипте bash?
shell-script
text-processing
TheLovelySausage
источник
источник
Ответы:
Вы можете использовать Vim в режиме Ex:
3
выберите строку 3i
вставить текст и перевод строкиx
написать, если изменения были сделаны (они есть) и выйтиИли по соответствующей строке:
источник
sed
было бы традиционным выбором (GNU sed, вероятно, имеет более простую форму, чем эта).Или, будучи чрезвычайно традиционным,
ed
(бонус! Редактирование на месте без непортативнойsed -i
формы).(Это не имеет ничего общего с
bash
.)источник
echo text to insert
наcat file-to-insert.txt
echo
, которые вы могли бы использоватьprintf '%s\n' 2 a 'text to insert' . wq
Как насчет чего-то вроде:
источник
источник