脚本基本应用 grep sed和awk

目录

一、正则表达式 grep

扩展正则表达式

sed和awk

3、sed的基本应用

4.awk的使用

 命令修改配置文件方法



一、正则表达式 grep

1、正则表达式的作用正则表达式的组成

1)正则表达式的作用

针对文件或者文本内容进行处理

帮助用户快速查找文本文件内容

2)正则表达式的组成

普通字符

大写A-Z

小写a-z

符号

元字符

2、正则表达式的常见选项和正则表达式常见的元字符

1)正则表达式grep常见的选项

-n:显示行号

-o:只显示匹配内容

-i:不区分大写或者小写字母

-v:取反

-E支持扩展

-q静默执行

-w: 识别为单词

-c: 统计匹配的行数

2)正则表达式的元字符

^:匹配行起始内容

$:匹配行结束内容

.:匹配任意单字符

.*:匹配任意字符

[]:匹配括号里边的内容

[-]:匹配括号里边内容的范围

{n}:匹配的范围的次数

[n1-n2]:匹配开始和结束内容

{ n,m }:重复前面的一个字符n到m次

{ n, }:重复前面的一个字符至少n次

[^]:匹配括号之外的任意字符

\:转义字符

\<: 固定词首

\>: 固定词尾

示例文件

[root@bogon ~]#  vim dd.sh

#!/bin/bash

qwe

qsdfe

qsdf

asdf

1234

12354

过滤关键字并显示行号

[root@bogon ~]# grep -n '1234' dd.sh

6:1234

查看行q开始字段

[root@bogon ~]# grep -n '^q' dd.sh

2:qwe

3:qsdfe

4:qsdf

匹配任意单个字符

[root@bogon ~]# grep -n 'q.e' dd.sh

2:qwe

[root@bogon ~]# grep -n 'q...e' dd.sh

3:qsdfe

匹配括号内容

[root@bogon ~]# grep -n 'q[w]e' dd.sh

2:qwe

[root@bogon ~]# grep -n 'qs[d]f' dd.sh

3:qsdfe

4:qsdf

只显示匹配内容

[root@bogon ~]# grep -o 'q' dd.sh

q

q

q

匹配开始是q结束是e的字段

[root@bogon ~]# grep -n 'q*e' dd.sh

2:qwe

3:qsdfe

[root@bogon ~]# grep -n "q*f" dd.sh

3:qsdfe

4:qsdf

5:asdf

过滤IP地址信息

[root@bogon ~]# cat q.txt
192 .168.1.139

192 .168.1.111


192 .168.1.121

[root@bogon ~]# grep -n -E "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" q.txt

1:192.168.1.139

2:192.168.1.111

3:192.168.1.121

扩展正则表达式

扩展正则表示常见的元字符

+:重复一次或者多次前面字符显示出来

?:显示当前字母前一个字符

|:或者,显示多个字符

():查找组字符串

()+:辨别多个重复组

将4前面内容显示出来

[root@bogon ~]# egrep -n '?4' dd.sh

6:1234

7:12354

将qwe或者asd显示出来

[root@bogon ~]# egrep -n 'qwe|asd' dd.sh

2:qwe

5:asdf

将包含 q 1 a 字符所在行显示出来

[root@bogon ~]# egrep -n '(q|1|a)' dd.sh

1:#!/bin/bash

2:qwe

3:qsdfe

4:qsdf

5:asdf

6:1234

7:12354

将开头是q 中间是sd 结束是f 的单词显示出来

[root@bogon ~]# egrep -n 'q(sd)f' dd.sh

3:qsdfe

4:qsdf

sed和awk

1、sed的作用和sed的工作流程

1)sed的作用

sed是一个文本文件解析转换工具

用于读取、修改、显示数据

2)sed的作用流程

读取数据:从文件、输入、管道命令中读取数据,临时存储数据

执行:根据sed命令在模式操作空间中进行无交互修改数据

显示:将文本文件的修改结果进行打印显示

2、sed命令常见的选项和操作符

1)sed命令选项

-n:显示处理后的结果

-h:显示帮助

-e:指定命令或者脚本处理输入的文本文件

-f:指定脚本处理输入的文本文件

-i:直接编辑文本文件

2)sed的操作符号

a:添加内容

d:删除内容

p:打印内容

s:替换内容

y:字符转换

c:将特定行替换成指定的内容

3、sed的基本应用

显示一到三行数据

[root@bogon ~]# sed -n '1,3p' dd.sh

#!/bin/bash

qwe

qsdfe

显示奇数

[root@bogon ~]# sed -n -e '1p;3p;5p' dd.sh

#!/bin/bash

qsdfe

asdf

不显示第一行数据(可以算是删除 没有真正删除掉)

[root@bogon ~]# sed '1d' dd.sh

qwe

qsdfe

qsdf

asdf

1234

12354

修改大小写

[root@bogon ~]# sed -i 's/qwe/QWE/' dd.sh

[root@bogon ~]# cat dd.sh

#!/bin/bash

QWE

qsdfe

qsdf

asdf

1234

12354

关键字添加注释

[root@bogon ~]# sed -i '/^QWE/s/^/#/' dd.sh
[root@bogon ~]# cat dd.sh

#!/bin/bash
#QWE

qsdfe

qsdf

asdf

1234

12354

将1到5行移动到6到7行中间

[root@bogon ~]# sed -i '1,5H;6,7G' dd.sh
[root@bogon ~]# cat dd.sh
#!/bin/bash
QWE
qsdfe
qsdf
asdf
1234

#!/bin/bash
QWE
qsdfe
qsdf
asdf
12354

#!/bin/bash
QWE
qsdfe
qsdf
asdf

4.awk的使用

1)awk的作用

过滤和读取数据使用

2)awk的变量

FS:文本字段的分隔符,可以使用空格为占位符

NF:处理行数

NR:处理数据的行号

$0:处理数据的整行数据

$n:处理数据行的第几列数据

显示第一列数据

[root@bogon ~]# awk '{print $1}' q.txt

192

192

192

显示所有内容

[root@bogon ~]# awk '{print}' dd.sh

#!/bin/bash
#QWE
qsdfe
qsdf
asdf


#!/bin/bash
#QWE
qsdfe
qsdf
asdf
#!/bin/bash
#QWE
qsdfe
qsdf
asdf
12354

#!/bin/bash
#QWE
qsdfe
qsdf
asdf

在第一列和第二列之间添加--

[root@bogon ~]# awk '{print $1"--"$2}' q.txt

192.168.1.139--

--

--

--

192.168.1.111--

--

--

192.168.1.121--

从小到大排序

[root@bogon ~]# sort q.txt

192.168.1.111

192.168.1.121

192.168.1.139

 排序  r是逆序 从大到小

[root@bogon ~]# sort -nr q.txt

192.168.1.139

192.168.1.121

192.168.1.111

统计出现的次数   空格5就是有五行空格

[root@bogon ~]# sort q.txt | uniq -c

      5

      1 192.168.1.111

      1 192.168.1.121

      1 192.168.1.139

从历史命令中提取使用率最高的前五个命令

[root@bogon ~]#  history | awk '{print $2}' | sort |uniq -c |sort -nr |sed -n '1,5p'

     12 ifconfig

     12 awk

      7 sort

      6 yum

      3 sed

从历史命令中提取使用率最高的前五个命令

[root@bogon ~]#  history | awk '{print $2}' | sort |uniq -c |sort -nr |awk 'NR<=5{print}'

     12 ifconfig

     12 awk

      7 sort

      6 yum

      3 sed

 命令修改配置文件方法

1. sed命令:

sed命令可以用来在文件中查找和替换文本。

例如,要将文件/etc/nginx/nginx.conf中的“worker_processes 1;”更改为“worker_processes 2;”,可以使用以下命令:
sudo sed -i 's/worker_processes 1;/worker_processes 2;/' /etc/nginx/nginx.conf

sed -i  “1i  asdfg” /etc 添加到第一行

2. awk命令:

awk命令可以用来处理文本文件中的数据。

例如,要将文件/etc/passwd中的所有用户的shell更改为/bin/bash,可以使用以下命令:


sudo awk -F: '{OFS=":"; $7="/bin/bash"} {print}' /etc/passwd > /tmp/passwd && sudo mv /tmp/passwd /etc/passwd


3. echo命令:

echo命令可以用来将文本输出到文件中。

例如,要将文本“Hello World”添加到文件~/test.txt的末尾,可以使用以下命令:


echo "Hello World" >> ~/test.txt


请注意,使用这些命令更改配置文件可能会导致配置文件中的语法  错误,因此在更改配置文件之前,请确保您知道自己在做什么,并备份原始文件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值