Linux 添加文本到指定行/在文件的指定行添加内容(shell, sed)

话题相关
#Linux如何添加文本到指定行
#shell如何添加文本到指定行
#sed 插入文本

用sed来插入文本到指定行。

基本语法

  • 只是在屏幕输出/打印中显示更改,并不改变文件本身内容
sed '作用范围行 插入行前/行后 插入内容' 文件名
# 中间的空格也可省略
sed '作用范围行插入行前/行后插入内容' 文件名
# 常常在插入内容前留空格
sed '作用范围行插入行前/行后 插入内容' 文件名
  • 通常需要的是改变文件内容本身,要在sed后面加 -i,是编辑文档“edit files in place”选项。
sed -i '作用范围行 插入行前/行后 插入内容' 文件名

插入行前/行后

# sample.txt文件第1行前面添加“hello”;实质就是插入内容到文件第1行
sed -i '1 i hello' sample.txt

# sample.txt文件第1行后面添加“hello”;实质就是插入内容到文件第2行
sed -i '1 a hello' sample.txt

行前用 i ,行后用a
ia常用。
当然要插入内容到最后一行就得用a了。同样要插入内容到文件第一行需要用i

作用范围行

注意如果是刚建好的空文件是写不进内容的,因为空文件例没有行号。
最后一行用$表示。

  • 插入内容到某行,直接写指定行号。

把内容插入到某行应该是最常用的。 也是本文题目所指。

# 把"hello"插入到第2行
sed -i '2i hello' sample.txt
  • 行号位置为空,即不写行号,就是作用范围在全文每一行
sed -i 'i hello' sample.txt

效果是这样的,

$ cat test.txt 
a
b
c
d
# 不写行号,作用在每一行
$ sed 'i hello' test.txt 
hello
a
hello
b
hello
c
hello
d

注意这一点这vim中的作用范围不太一样,vim中不写作用范围的话是作用于光标所在的当前行,而sed是指全文范围。

  • 指定某行到某行,用逗号连接行号
$ sed '2,4 i hello' test.txt 

效果是这样的,

$ cat test.txt 
a
b
c
d
# 作用在原本的第2行到第4行
$ sed '2,4 i hello' test.txt 
a
hello
b
hello
c
hello
d

(以上。)

发布了28 篇原创文章 · 获赞 2 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Olivia_Vang/article/details/104081096