linux指令--sed

sed 主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。

语法解析

sed  [选项]   编辑命令   文件

选项:

  • -n:只显示匹配处理的行
  • -e:执行多个编辑命令时
  • -i:在原文件中进行修改,不输出到屏幕
  • -r:支持扩展正则表达式
  • -f:从脚本文件中读取内容并执行

编辑命令:

  • p:打印匹配行(print)
  • d:删除指定行 (delete)
  • a:在匹配行后面追加 (append)
  • i:在匹配行前面插入 (insert)
  • c:整行替换
  • r:将文件的内容读入 (read)
  • w:将文本写入文件 (write)
  • s:字符串替换(匹配正则表达式)(substitution)
  • =:输出行号

使用示例

先创建文件test.txt,并写入如下内容:

HELLO LINUX!  
Linux is a free unix-type opterating system.  
This is a linux testfile!  
Linux test 
Google
Taobao
Runoob
Tesetfile
Wiki

p命令的使用

通常与-n选项结合使用

输出行内容:

sed -n '1p' test.txt  // 输出第一行内容
sed -n '1,5p' test.txt  // 输出1~5行内容
sed -n '$p' test.txt  // 输出最后一行内容
sed -n '1p;2p;5p' test.txt  // 输出第1、2、5行内容

模式匹配输出行:

sed -n '/模式/p' 文件

sed -n '/is/p' test.txt  // 打印存在 is 内容的行

d命令的使用

删除指定行:

sed '3d' test.txt  // 删除第三行内容

a命令的使用

与-i选项结合使用,在原内容的基础上进行修改

sed -i '1a linux-next' test.txt  // 在第一行后添加了‘linux-next’内容

sed -i '/is/a is-next' test.txt  // 在含有 is 内容的行后添加‘is-next’内容

i命令的使用

与a命令使用类似,只不过是在指定行前插入。

sed -i '1i linux-next' test.txt  // 在第一行前插入
sed -i '/is/i is-next' test.txt  // 在含有 is 内容的行前添加‘is-next’内容

c命令的使用

对整行进行修改

sed '1c hello linux' test.txt  // 对第一行内容进行修改 内容改为‘hello linux’
// 因为没有带任何选项,所以默认打印操作后的所有行内容,不会在原内容上修改

sed '/is/c hello linux' test.txt  // 将含有 is 内容的行修改为hello linux

r命令的使用

将指定文件读入到文件中,操作执行在指定行的后面

新建一个临时文件tmp:

I am new content

将tmp文件的内容读入到test.txt文件中

sed '1r tmp' test.txt  // 对test.txt文件的第一行读入tmp文件

模式匹配读入

sed '/is/r tmp' test.txt  // 将tmp文件内容读入到test.txt文件中含义is的行之后

s命令的使用--文本替换

sed -i '[address]s/pattern/replacement/flags' filename
// -i 加上选项时在原文上修改,不加则不会修改原文内容
// pattern 查找内容
// replacement替换内容

address用法如下:

address 数字,表示第几行。如3指第三行

address,address1 数字,表示从第几行到第几行。如3,5 从第三行到第五行

$ 表示最后一行。如2,$ 从第二行到最后一行

flags 标记功能

n 1~512 之间的数字,表示指定要替换的字符串在一行中出现第几次时才进行替换,例如,一行中有 3 个 A,但用户只想替换第二个 A,这是就用到这个标记;

g 全局替换。对数据中所有匹配到的内容进行替换,如果没有 g,则只会在第一次匹配成功时做替换操作。例如,一行数据中有 3 个 A,则只会替换第一个 A;

p 会打印与替换命令中指定的模式匹配的行。此标记通常与 -n 选项一起使用。

w file 将缓冲区中的内容写到指定的 file 文件中;

& 用正则表达式匹配的内容进行替换;

\n 匹配第 n 个子串,该子串之前在 pattern 中用 指定。

\ 转义(转义替换部分包含:&、\ 等)。

用法案例:

lixd@VM-16-13-ubuntu:~/practice$ cat test.txt

LINUX!

Linux is a free unix-type opterating system.

This is a linux testfile!

Linux test

Google

Taobao

Runoob

Tesetfile

Wiki

下面的操作不加 -i 选项,不会在原文内容上修改:

// 将全局的LINUX替换为MySQL
sed 's/LINUX/MySQL/g' test.txt

// 将每行第二次出现的a字符替换为#
sed 's/a/#/2g' test.txt

// 将第1到第三行头部添加#
sed '1,3 s/^/#/g' test.txt
// 将第一到第三行末尾添加?
sed '1,3 s/$/?/g' test.txt

相关推荐

  1. Linux】文本替换Ubuntu 中 sed 指令的使用指南

    2024-06-08 21:08:04       17 阅读
  2. linuxsed 用法详解

    2024-06-08 21:08:04       41 阅读
  3. Linux sed 命令

    2024-06-08 21:08:04       33 阅读
  4. linuxsed

    2024-06-08 21:08:04       4 阅读

最近更新

  1. 乘积最大3

    2024-06-08 21:08:04       0 阅读
  2. MySQL中的隐式转换(Implicit Conversion)

    2024-06-08 21:08:04       0 阅读
  3. 什么是内存泄漏?如何避免内存泄漏?

    2024-06-08 21:08:04       0 阅读
  4. Web前端级别要求:深入剖析技能层次与发展路径

    2024-06-08 21:08:04       0 阅读
  5. git-本地项目与git连接及上传【快速教程】

    2024-06-08 21:08:04       0 阅读
  6. “先票后款”条款的效力认定

    2024-06-08 21:08:04       0 阅读
  7. 第一章 基本指令

    2024-06-08 21:08:04       0 阅读

热门阅读

  1. Jetpack compose中State和Kotlin Flow对比

    2024-06-08 21:08:04       6 阅读
  2. django支持https

    2024-06-08 21:08:04       5 阅读
  3. 如何反编译jar并修改后还原为jar

    2024-06-08 21:08:04       7 阅读
  4. nacos新版踩坑

    2024-06-08 21:08:04       5 阅读
  5. Openresty人机验证流程

    2024-06-08 21:08:04       6 阅读
  6. 【重学C语言】十九、SDL2 图形化编程的使用

    2024-06-08 21:08:04       4 阅读
  7. SWD端口无法连接如何排查

    2024-06-08 21:08:04       5 阅读