вставка текста в определенную строку

У меня есть текстовый файл и Bash использования, в который я хочу вставить текст в определенную строку.

Текст, который будет вставлен, например, !comment: http://www.test.com в строку 5

!aaaa
!bbbb
!cccc
!dddd
!eeee
!ffff

становится,

!aaaa
!bbbb
!cccc
!dddd
!comment: http://www.test.com
!eeee
!ffff
8
задан phuclv 1 March 2018 в 05:40
поделиться

3 ответа

sed '4a\
!comment: http://www.test.com' file.txt > result.txt

i вставляет перед текущей строкой, a добавляет после строки.

17
ответ дан 5 December 2019 в 07:10
поделиться

вы также можете использовать 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
4
ответ дан 5 December 2019 в 07:10
поделиться

Использование 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
2
ответ дан 5 December 2019 в 07:10
поделиться
Другие вопросы по тегам:

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