我有一个文本文件,使用Bash我希望将文本插入到特定的行中。
要插入的文本例如!comment: http://www.test.com
到第5行
!aaaa
!bbbb
!cccc
!dddd
!eeee
!ffff
变,
!aaaa
!bbbb
!cccc
!dddd
!comment: http://www.test.com
!eeee
!ffff
答案 0 :(得分:16)
sed '4a\
!comment: http://www.test.com' file.txt > result.txt
我在当前行之前插入,在行之后追加。
答案 1 :(得分:4)
你也可以使用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
答案 2 :(得分:1)
使用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