文本三剑客grep

目录

grep

grep命令的语法为:

常用的 grep命令选项:

sort

uniq快捷去重复

cut 快速裁剪

split文件拆分

paste 合并文件

实验题

 统计当前主机的链接状态

统计当前主机的链接数

空格匹配

表示次数


grep

文本三剑客之一

对文本内容进行过滤

支持正则表达式

grep 是一个 Linux/Unix 操作系统中常用的命令,它用于在文本中查找匹配的字符串并输出相应的行。它的名字是由 g/re/p 组合而成的,其中 g 表示 global,re 表示正则表达式,p 表示打印,意思是全局搜索某个正则表达式并打印匹配的行。

grep命令的语法为:

grep [options] pattern [file...]

其中,pattern 指定要查找的字符串或正则表达式,file 指定要查找的文件,可以指定多个文件。如果不指定文件,grep 命令将从标准输入读取数据。

常用的 grep命令选项:

  • -i:忽略大小写

  • -v:取反(除了什么其他都要)

  • -n:输出匹配的行及行号

  •  -c:仅输出匹配的行数

  •  -r:递归地搜索子目录中的文件递归显示当前目录下所有包含搜索文本的内容但是他不处理软连接处理软连接要用-R

  • -w:只匹配完整单词

  • -e:指定要搜索的模式可以跟多个条件

  • -E:使用扩展的正则表达式语法或者直接输入egrep也可以

  • -m:匹配几次后停止 +数字就匹配第几个文本内容

  • -o :只匹配搜索的内容其余一概不显示 

  • -A: 加上数字就是行数匹配到当前行以及后几行内容这里是3就是匹配后三行

  • B:匹配文本当前行的前几行用法同上

  • -C:匹配文本当前上下几行的内容是A和B的结合

  • -f:处理两个文件中相同的内容第一个文件做为匹配内容

  • ^$:过滤文本空行使用正则表达式一定要用""引起来

  • ^:以什么为开头匹配

  • $:以什么为结尾匹配

  • -n+"^内容$"+文件名称

  • 只匹配有一个搜索内容的行,多个的不匹配

  • 这里就只匹配了最后一个root

sort

以行为单位对文件内容进行排序

也可以根据不同的数据类型来进行排序

sort -f 忽略大小写,默认情况大写字母会排在前面

 

 

sort -b忽略每行前面的空格

sort -n按照数字进行排序正向排序(从小到大)

 

sort -r反向排序(从大到小)

 sort -u 去重复

 

 sort -o将排序过的结果输出到指定的文件

 想给他们原来的顺序来排列

cat -n /etc/passwd | sort -n -o ky29.txt

这个命令将 /etc/passwd 文件的每一行进行编号,并将编号后的内容输出到屏幕上。同时,它还会将输出结果按照行号进行升序排序,并将排序后的结果保存到名为 ky29.txt 的文件中。

uniq快捷去重复

格式

 cat 文件名 | uniq 选项

单独使用 uqin 选项 参数

uniq -c统计连续重复的行的次数,并且合并重复的行

如果想给他排序就可以再连接个管道符

uniq-u显示仅出现一次的行(只有连续重复出现的他才会不显示如果分开的重复内容还是会统计)

 

 

 uniq -d 匹配连续出现的行一定要是连续出现的行才会匹配

 

tr 对来自标准输入的字符,进行替换 压缩 删除

tr -c 保留字符集1的字符,其他的字符用字符集2进行替换

保留ab替换了c输出结果一个是abaa

 tr -b 删除所有字符集为1的字符(这里示例中字符集1位abc意思是删除abc里的ab只保留c)只有-d不需要跟上字符集2

 tr -s 把重复出现的字符串压缩成一个之后用前一个替换成后一个

 这里就是把t压缩成一个t并替换成了b所有输出为zb

 tr -t 就是替换默认就是-t不加t也可以替换

cut 快速裁剪

选项加参数

也可以用cat配合 cat file | cut 选项

cut -d 指定分隔符

cut -f 按字段进行截取,跟上数字,截取第几段

cut -b 以字节为单位进行截取

cut -c以字符为单位进行截取

cut -complemnt 排除所指定的字段

 cut -output -delimiter

 split文件拆分

split -l 指定行数

split -b 指定文件大小

他会严格按照你规定的大小进行切割剩下的是多少就是多少这里限制的时2.0M

paste 合并文件

 

paste左右合并

cat是上下合并

实验题

 统计当前主机的链接状态

ss -nta | grep -v '^State' | cut  -d  " " -f 1 | sort | uniq -c 

表示建立的TCP链接处于活动状态

第二题

统计当前主机的链接数

ss -nt | tr -s " " | cut -d  " " -f  4 | sort -n | uniq -c

正则表达式是一种用于描述字符串模式的特殊语法。它可以用来匹配、搜索、替换文本中的字符或字符串。

正则表达式由普通字符和元字符(也称特殊字符)组成。普通字符包括字母、数字和常用标点符号,表示其本身;元字符具有特殊的含义,例如 * 表示前面的字符或模式出现任意次,+ 表示前面的字符或模式出现至少一次,? 表示前面的字符或模式出现零次或一次等。匹配结果只看红字部分

以下是常用的正则表达式元字符:

  • .:匹配任意一个单个字符也可以是汉字

  • *:匹配前面的字符或模式出现零次或任意次数

  • +:匹配前面的字符或模式出现至少一次

  • ?:匹配任意一个字符

  • |:表示逻辑 OR,可以匹配多个模式中的任何一个

  • ():表示将多个模式组合成一个子模式,方便后续引用或组合

  • []:表示匹配字符集合中的任意一个字符

  • 匹配0-9的内容

  • [^]:表示匹配除了字符集合中的任何一个字符之外的任意一个字符(取反除了什么其他都要)这里除了大写的A-Z其他都要

正则表达式被很多程序和开发语言所广泛支持:vim, less,grep,sed,awk, nginx,mysql等

主要用来匹配字符串(命令结果,文本内容)

通配符只用于匹配文件名、目录名等,不能用于匹配文件内容。(而且是已存在的文件或者目录)

通配符主要是为了方便用户对文件或者目录的描述, 例如用户仅仅需要以".sh"结尾的文件时,使用通配符就能很方便地实现。 各个版本的shell都有通配符,这些通配符是一些特殊的字符, 用户可以在命令行的参数中使用这些字符,进行文件名或者路径名的匹配。 shell将把与命令行中指定的匹配规则符合的所有文件名或者路径名作为命令的参数, 然后执行这个命令。

*:通配符匹配任意一个或多个字符 ls *.txt

?:通配符 匹配一个任意字符 [root@localhost opt]# ls ?.txt

[] 通配符 [list] 匹配list中任意单个字符 ls [a-z].txt

  • 基本正则表达式

  • 扩展正则表达式

元字符(字符匹配)

元字符: . 匹配任意单个字符,可以是一个汉字 () 使用转义符,只表示() [] 匹配指定范围内的任意单个字符,示例:[dn] [0-9] [] [a-zA-Z] [:alpha:] [^] 匹配指定范围外的任意单个字符,示例:dn a.z [:alnum:] 字母和数字 [0-9] [a-z] [0-9] [a-z] [:alpha:] 代表任何英文大小写字符,亦即 [A-Z], [a-z] [:lower:] 小写字母,示例:[[:lower:]],相当于[a-z] [:upper:] 大写字母 [A-Z]

空格匹配

虽然输出结果并没有显示但是鼠标拖动选中红色部分就是空格

表示次数

  • #匹配前面的字符任意次,包括0次,贪婪模式:尽可能长的匹配

  • .* #任意长度的任意字符,不包括0次,也就是匹配所有

  • \? #匹配其前面的字符出现0次或1次,即:可有可无

  • + #匹配其前面的字符出现最少1次,即:肯定有且 >=1 次

  • {n} #匹配前面的字符=n次

  • {m,n} #匹配前面的字符至少m次,至多n次

  • {,n} #匹配前面的字符至多n次,<=n

  • {n,} #匹配前面的字符至少n次

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值