У меня есть текстовый файл и Bash использования, в который я хочу вставить текст в определенную строку.
Текст, который будет вставлен, например, !comment: http://www.test.com
в строку 5
!aaaa
!bbbb
!cccc
!dddd
!eeee
!ffff
становится,
!aaaa
!bbbb
!cccc
!dddd
!comment: http://www.test.com
!eeee
!ffff
sed '4a\
!comment: http://www.test.com' file.txt > result.txt
i вставляет перед текущей строкой, a добавляет после строки.
вы также можете использовать awk
$ awk 'NR==5{$0="!comment: http://www.test.com\n"$0}1' file
!aaaa
!bbbb
!cccc
!dddd
!comment: http://www.test.com
!eeee
!ffff
Использование man 1 ed (которое считывает файл в память и выполняет редактирование файла на месте без предварительного резервного копирования):
# cf. http://wiki.bash-hackers.org/doku.php?id=howto:edit-ed
line='!comment: http://www.test.com'
#printf '%s\n' H '/!eeee/i' "$line" . wq | ed -s file
printf '%s\n' H 5i "$line" . wq | ed -s file