文本三剑客之sed

目录

sed和awk的区别:

一. sed语法&选项

1. 语法

①基本语法,类似cat

② sed 选项 '自身脚本语法'  操作

2. 选项

① 命令的选项

② sed自身脚本语法中的命令选项

3. 用法举例

① 例:查找几点几分到几点几分之间的日志(/pat1/,/pat2/)

② 例:修改文件内容

二. 搜索替代

1. 普通用法

(地址)s/旧字符/新字符/修饰符,

修饰符:

2. 分组后项引用

举例讲解

① 基本用法

② 高阶用法 筛选(.*)


sed和awk的区别:

1. awk主要处理的是列

    sed处理的行

2. awk处理固定长度的列用比较好

    不固定长度的列用sed好处理

一. sed语法&选项

1. 语法

①基本语法,类似cat

文本三剑客之sed_第1张图片

② sed 选项 '自身脚本语法'  操作

tips:选项可以没有,但是自身脚本语法操作必须要有。

         单引号双引号无所谓,awk要注意单双引号。

2. 选项

sed选项分两类

① 命令的选项
-e 多点编辑 例: sed -n -e  '/^r/p'  -e  '/^b/p'  /etc/passwd
-n 关闭自动打印(sed会自动打印,不关用脚本语法中的 ‘p’ 时会打印两次)
-r 使用扩展正则
-i 实际修改文件的内容
-i.bak 实际修改前先备份源文件,会产生一个源文件.bak的文件
② sed自身脚本语法中的命令选项

脚本语法格式:‘地址+命令’

Ⅰ. 不写地址就是全文

Ⅱ .单地址

      #:指定的行

      $:最后一行

Ⅲ .地址范围:
      #,#     #从#行到第#行,3,6 从第3行到第6行
      #,+#   #从#行到+#行,3,+4 表示从3行到第7行
      /pat1/,/pat2/    第一个正则表达式和第二个正则表达式之间的行
      #,/pat/  从#号行为开始找到 pat为止 
      /pat/,#  找到#个/pat/为止

Ⅳ .步进:~

      1~2  奇数行

      2~2  偶数行

Ⅴ .命令选项

p 打印 查看文件第三行:sed -n ‘3p’  文件名 ,前三行是 '1,3p'
q 提前退出 打印到第三行就退出:sed ‘3q’  文件名
d 删除 查看时删掉第三行:sed ‘3d’  文件名
a 在某一行的后一行插入内容

在第三行后加入hh  sed 3ahh

(不打开文件的情况下修改文件内容,但没保存到文件里)

i 在某一行的前一行插入内容 同上,把a换成 i
c 把某一行替换成掉 同上,把a换成 c
r 插入文本内容 在第二行后插入文本内容:sed  '2r 要插入的文本名' 
= 显示行号 一般不用

3. 用法举例

① 例:查找几点几分到几点几分之间的日志(/pat1/,/pat2/)

 sed  -n  '/几点几分/,/几点几分/p'   日志文件

② 例:修改文件内容

sed  -i  '2a \ hehe\nhaha'  文件名  
\表示空格    \n 表示换行

二. 搜索替代

脚本命令里面可以用s///来搜索替代,类似vim的s///

1. 普通用法

(地址)s/旧字符/新字符/修饰符,

tips:旧字符可以用表达式,新字符不可以

修饰符:
修饰符 效果
g 行内全局替换
p 显示替换成功的行
w /PATH/FILE 将替换成功的行保存至文件中
I,i 忽略大小写

例:把/etc/passwd里面的root后面加上er

2. 分组后项引用

tips:只有扩展正则式才支持分组

举例讲解
① 基本用法

② 高阶用法 筛选(.*)

常用公式:sed -nr 's/旧字符/\1/p'        (1:要选择留下的组。p:打印出来)

例:筛选出网卡信息中的IP地址

文本三剑客之sed_第2张图片

你可能感兴趣的:(linux,运维,服务器)