将文本插入特定行

问题描述 投票:8回答:3

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

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

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

变,

!aaaa
!bbbb
!cccc
!dddd
!comment: http://www.test.com
!eeee
!ffff
bash
3个回答
16
投票
sed '4a\
!comment: http://www.test.com' file.txt > result.txt

我在当前行之前插入,在行后追加。


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

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
© www.soinside.com 2019 - 2024. All rights reserved.