将文本插入特定行

时间:2010-07-17 23:32:24

标签: bash

我有一个文本文件,使用Bash我希望将文本插入到特定的行中。

要插入的文本例如!comment: http://www.test.com到第5行

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

变,

!aaaa
!bbbb
!cccc
!dddd
!comment: http://www.test.com
!eeee
!ffff

3 个答案:

答案 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