Linux---Shell(文本处理工具 和 Shell脚本)

目录

一、文本处理工具

1.1 grep

1.1.1 匹配行首

1.1.2 设置大小写

1.1.3 转义字符

1.2 sed

 1.2.1 追加文件

1.2.2 删除文本

1.3 awk

1.3.1 关系表达式

二、Shell脚本

2.1 结构判断

2.2 循环结构

2.3 break 和 continue

2.4 Shell脚本的基本元素与执行方式


一、文本处理工具

1.1 grep

        grep是文本搜索命令,会从一个或多个文件中搜索与指定匹配模式的文本行,并打印匹配结果,一般格式为:   grep 【选项】【模式】【文件名】

模式是匹配规则,模式后的文件名用于指定搜索目标,文件名可以有多个,之间用空格隔开,模式前选项用于对模式进行补充说明

常用选项 

ee478fbaed5248c4ae285d26c04238f9.png

grep与正则表达式配合使用,来达到搜索功能 

1.1.1 匹配行首

        正则表达式的元字符 “ ^ "表示匹配行首,使用 grep 搜索文本时使用 匹配行首字符进行行首的匹配

例如:grep  -c ^$ /etc/yum.conf (查找yum.conf文件中有多少空白行)

 7f69d91109274b8a9a66f91c1b5321e4.png

1.1.2 设置大小写

        使用 i 选项可以使用gerp命令不区分大小写,使用符号 [ ] 命令也可实现这一功能

例如:grep '[Tt] [Hh][Ii][Ss]'yum.conf (不区分大小写查找“this”字符串)

2adcc37cb3c64e7585985d3c8e375760.png

1.1.3 转义字符

        若匹配的目标字符串中含有元字符,则需要使用转义字符 " \ " 屏蔽它们,常见的元字符有 " . " , " - " , 需要使用 "  \ " 去进行转义

编写文件 test1

abcdef
---
123456

grep ' \ - \{ 3 \ } '  test(查找文件 test1中‘---’)

 50436f735a8746149341b46043b6b602.png

1.2 sed

        sed 是 一个非交互式的文本处理信息,可以对文本文件和标准输入进行编辑,标准输入有 键盘 、文件重定向、 字符串、 变量等

使用环境:编辑命令复杂,文件过大、文本处理需要执行多个函数时使用该命令

优点:一次性处理所有编辑任务,提高效率,节约时间

格式:sed [选项] ' sed编辑命令 ’ 输入文件 (sed编辑命令要用单括号括起来)

常用选项:

42474bbca982416bbb553da66bd3de68.png

编辑命令:

2844c1896c5d4551bbedc10d66bb3304.png

例如:sed ' = ' test1(显示行号输出文件test1)

39051d198e8441dda8a1d95cd7df5953.png

 1.2.1 追加文件

        sed的编辑命令a\ 用于追加文本,它可以指定一行或多行文本追加到指定位置以 匹配模式 " /pattern/ "或行号形式给出,如果不指定,则默认放到每一行后面

例如:sed ' /123456/a\add a new line!!! ' test1 (在文件内容后追加新文本 add a new line!!!)

fe0f9ded03d0462ba8408795a857913b.png

  追加文本脚本实现:

vi add.sh

/For rain/a\ we add a new line!!!

以上只是在标准输中对输出结果进行了追加,并没有讲这些新文本添加到原始文件中,如果要修改文件,需要使用 -i 选项

sed -f add.sh -i poem

 137d98dec39d4100a149d5bc2a6d1d2a.png

1.2.2 删除文本

        删除某一行,使用编辑命令d

sed '/we add new line!!!/d' test1 

 6c18d8a2c25549d79e68c84d75a67d20.png

#! bin/sed -f

/For rain/a\ 

we add a new line!!!

add.sh中没有指定命令解释器,需要调用相应的命令来执行脚本

sed -f add.sh test1

在 add.sh 脚本文件中(第一行) 指定命令解释器

#! /bin/sed -f 

c1fab3ef2ace4e8d8acf1572dd26f007.png

1.3 awk

 awk在读取分析数据时,从头到尾 逐行扫描文件内容 ,寻找指定模式匹配的行,并对匹配的文本进行处理,awk的工作流程分为 模式匹配 和 处理过程 两步, 两种特殊模式分为 BEGIN 和 END

 awk中的匹配模式主要包括 关系表达式、正则表达式、混合模式、BEGIN、END

模式匹配:

1.如果没有指定匹配模式,则默认匹配所有数据

处理数据:

1.匹配则处理数据

2.不匹配则不做任何处理

3.未指定处理方式,则输出

两种特殊模式:

BEGIN:放置在读取数据之前执行,标志数据读取即将开始

END:放置在读取数据之后执行,标志数据读取已经完毕

命令基本格式:awk [选项] pattern {actions} 文件

pattern是匹配模式,actions 是要执行的操作,文本符合规则时,pattern 和 actions都是可选的,必须选择一个:

pattern 是 匹配模式(可选) 省略pattern则对所有文本执行actions操作

actions 是 执行的操作(可选) 省略actions则将匹配结果打印到终端

常用命令

50d0cb5d5c874617b6466b10f9e57b01.png

1.3.1 关系表达式

        awk允许用户使用关系表达式作为匹配模式,当文件行满足关系表达式时,会执行相应操作

cea5f6cb54954c49899ce43e4ab15d68.png

 #! bin/bash

result = ` awk ' $2 > 80 {print} ' scores `

echo "$result" 

变量$2 表示引用第二列的值, {print} 表示打印匹配成功的文本行

(变量$0:引用所有列的值        变量$NF:引用最后一列的值)

二、Shell脚本

2.1 结构判断

2.2 循环结构

2.3 break 和 continue

2.4 Shell脚本的基本元素与执行方式

猜你喜欢

转载自blog.csdn.net/weixin_64428129/article/details/127491606
今日推荐