目录

一、基础正则表达式

二、文本处理工具

(1)grep命令

(2)cut、sort、uniq、tr

cut   !列截取工具 !

sort排序工具

uniq去重工具

tr修改工具


一、基础正则表达式

正则表达式不是一个工具程序,而是一个字符串处理的标准依据,要想使用正则表达式的方式处理字符串,就需要使用支持正则表示的工具:vi,grep,egrep,sed,awk;这其中,egrep和awk支持拓展正则表达式。

元字符 作用
\ 转义字符,用于取消特殊符号的的含义例:!,\n,$等
^ 匹配字符串开始的位置例:a,the,#,[a-z]
$ 匹配字符串结束的位置例:wordKaTeX parse error: Expected group after '^' at position 2: ,^̲匹配空行
. 匹配除\n之外的任何一个字符例:go.d , g…d
* 匹配前面子表达式0次或者多次例:goo*d,go.*d
[list] 匹配list列表中的一个字符例:go[loa]d,[a-z],[0-9]匹配任意一位数字
[^list]  匹配任意非list列表中的一个字符例:[0-9],[a-z]匹配任意一位非小写字母
{n}  匹配前面子表达式n次例:go{2}d,'[0-9]{2}'匹配两位数字
{n,} 匹配前面子表达式不少于n次例:go{2,}d,'[0-9]{2,}'匹配两位及两位以上的数字
{n,m} 匹配前面子表达式n到m次例:go{2,3}d,'[0-9]{2,3}'匹配两位到三位数字

扩展正则表达式

元字符 作用
+ 匹配前面子表达式一次以上例:go+d,将匹配至少一个o,如god,good,goood等
匹配前面子表达式0次或一次例:go?d,匹配将为gd或者god
() 将括号内的字符创作为一个整体例:g(oo)+d,将匹配oo整体一次以上
| 以或的方式匹配字符条串例:g(oo
  • \n匹配一个换行符
  • \r匹配一个回车符
  • \t匹配一个制表符

二、文本处理工具

(1)grep命令

使用grep命令可以对文本内的信息进行过滤、输出,以达到对相关文本内容进行“搜索”的功能

命令格式:grep  【选项】【过滤条件(用 ‘  ’ 包括)】 【目标文件】

-c                   只打印匹配的文本行的次数,不显示文本内容。
-i                    匹配时忽略字母大小写
-h                   当搜索多个文件,不显示匹配文件名前缀。
-l                    只列出含义匹配的文本行的文件的文件名,不显示其具体匹配的内容。
-n                   列出所有匹配的文本行,并显示行号
-s                   不显示关于不存在或无法读取文件的错误信息
-v                   只显示不匹配的文本行,反向选择,显示与参数字符串不相符的行。
-w                  匹配整个单词
-x                   匹配整个文本行
-r                    递归搜索,不仅搜索当前目录,还有各级子目录
-E                   开启扩展(extend)的正则表达式 (同egrep)

-A x                将符合条件的行的下面x行一起显示出来

-B x                将符合条件的行的上面x行一起显示出来

-C x                将符合条件的行的上下x行一起显示出来
–color=auto    可以将找到的关键词部分加上颜色的显示

例:

使用grep命令对目录/test中的test.txt和test/txt2文件的“lll”不区分大小写进行搜索并列出行号

[root@ljp /]# grep -rni 'lll' /test/test/test.txt:17:lll
/test/test.txt2:14:lll

“[]”中无论有几个字符, 都仅代表一个字符,也就是说“[ab]”表示匹配“a”或者“b”其中任意一个字符。

[root@ljp /]# grep -n '[ab]cd' /test/test.txt
#查找/test/test.txt中的“acd”或“bcd”项
21:aacd
22:bbcd

^”符号在元字符集合“[]”符号内外的作用是不一样的,在“[]”符号内表示反向选择,在“[]” 符号外则代表定位行首

[root@ljp /]# grep -nr '[^a]cd' /test/
#在/test中包含行号的递归查找除“a”开头符合?cd的项
/test/test.txt:22:bbcd
[root@ljp /]# grep -nr '^a' /test/
#在/test中包含行号的递归查找以字母“a”开头的所有项
/test/test.txt2:1:aaa
/test/test.txt:19:adc
/test/test.txt:21:aacd

查找输出非空行内容

grep -rnv '^$' /test

(2)cut、sort、uniq、tr

cut   !列截取工具 !

格式:cut   [选项]  [参数]

cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。

-b 按字节截取
-c 按字符截取,常用于中文
-d 指定分隔符截取。默认为制表符
-f 通常和-d一起使用,表示要操作的列数(x;x,y;x-y)

如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一

cut只擅长于处理单个字符为间隔的文本,-b只能分割字母,-c既可以分割字母也可以分割中文

例:

[root@ljp test]# head -3 /etc/passwd | cut -d ':' -f 3
0
1
2
#查看passwd前三行,截取第三列,以:为分隔符[root@ljp test]# head -3 /etc/passwd | cut -d ':' -f 1,3
root:0
bin:1
daemon:2
#查看passwd前三行,截取第一第三列,以:为分隔符[root@ljp test]# head -3 /etc/passwd | cut -d ':' -f 1-3
root:x:0
bin:x:1
daemon:x:2
#查看passwd前三行,截取第一到第三列,以:为分隔符

查看指定位置的列内容,同理选项c,主要针对中文使用

[root@ljp test]# tail -5 ./test.txt2 | cut -b 2
0
l
k
j
p

sort排序工具

格式:sort [选项] 参数

sort 是一个以行为单位对文件内容进行排序的工具,也可以根据不同的数据类型来排序。例如数据和字符的排序就不一样。

-t    指定分隔符,默认使用[Tab]键或空格分隔
-k    指定排序区域,哪个区间排序
-n    按照数字进行排序,默认是以文字形式排序
-u    等同于 uniq,表示相同的数据仅显示一行,注意:如果行尾有空格去重就不成功
-r    反向排序,默认是升序,-r就是降序
-o    将排序后的结果转存至指定文件
-f    忽略大小写,会将小写的字母都转换为大写字母来进行比较
-b    忽略每行前面的空格

例:

不加选项默认是自动排序,按a-z,0-9顺序排序

[root@ljp test]# sort ./test.txt2
000
111
222
333
444
555
666
777
888
999
aaa
bbb
ccc
jjj
kkk
lll
ppp

文件test前10行以:为分割,第五列内容以数字顺序进行排序

head -10 /test | sort -d ':' -k5 -n

去除文件test的重复行(空行会显示在最上方)

sort -u /test

结果输出到指定文件

tail -10 /etc/passwd | sort -d ':' -k 3 -n -o /test

uniq去重工具

格式:uniq [选项]

主要用于去除 !连续! 的重复行

-c 对重复的行进行计数
-d 仅显示重复行
-u 仅显示出现一次的行

例:

[root@ljp test]# cat test.txt
111
111
111
222
222
222
333
111
333
222
333[root@ljp test]# sort test.txt | uniq -c1 4 1114 2223 333

tr修改工具

格式:tr   [选项]   '目标字符串'   '要替换成的字符串'

-d 删除字符
-s 删除所有重复出现的字符,只保留第一个

例:

删除掉test.txt中的888

[root@ljp /]# nl /test/test.txt | tr -d '888'

只显示单个8

[root@ljp /]# nl /test/test.txt | tr -s '8'

将test.txt中的小写字母替换成大写

[root@ljp /]# nl /test/test.txt | tr '[a-z]' '[A-Z]'

当然,也可以替换掉符号

[root@ljp /]# nl /test/test.txt | tr 'a' '/'[root@ljp /]# nl /test/test.txt | tr "'" '!'
#如果替换的是单引号,则需要用双引号将其框选

linux正则表达式与文本处理工具相关推荐

  1. Linux正则表达式和文本处理工具(gred、awk、sed)

    使用Linux 的 gred.awk.sed 可以方便得处理文本,然而若要灵活使用这三个工具,首先必须理解正则表达式.这里先对正则表达式进行学习,做点记录,之后再练习一下文本处理工具的使用. 正则表达 ...

  2. Recoll:Unix和Linux桌面的文本搜索工具

    Recoll是一个Unix和Linux桌面的文本搜索工具.Recoll可以搜索文件名和文件内的关键字. Recoll可以为你做到以下这些. 它可以搜索任何格式的文件 支持通配符 可以依据文件的作者.类 ...

  3. Shell第二篇:正则表达式和文本处理工具

    一 什么是正则 正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法.或者说:正则就是用来描述一类事物的规则. 生活中处处都是正则:     比如我们描述:4条腿   ...

  4. 正则表达式和文本处理工具

    一 什么是正则 正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法.或者说:正则就是用来描述一类事物的规则. 生活中处处都是正则:     比如我们描述:4条腿   ...

  5. Linux正则与文本处理工具

    正则表达式 (Regular Expression, RE, 或称为常规表达式)是通过一些特殊字符的排列,用于『查找/替换/删除』一行或多行文字或字符串,简单的说,正则表达式就是用在字串的处理上面的一 ...

  6. Linux命令:文本处理工具awk详解

    awk命令简介: awk是一个强大的文本分析工具,通常,awk是以文件的每一行,为处理单位的.awk每接收文件的一行,然后执行相应的命令,来处理文本.  1.命令格式: awk 'pattern {a ...

  7. linux基础--awk文本分析工具详解

    简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再 ...

  8. linux+字符串+补零,Linux之基本文本处理工具(一)

    一.引言 Linux最重要的哲学思想就是:一切皆文件.可见文件及文件操作在Linux当中是多么的重要.在Linux系统中我们也会经常用到各种文本文件处理的操作,熟练使用这些小巧精悍的文本处理工具,在关 ...

  9. linux sed 倒数,文本处理工具之sed

    sed 行编辑器 sed是一种流编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令处理缓冲区中的 ...

最新文章

  1. 设置单元格不换行,多出的部分隐藏
  2. PCL学习笔记,区域生长分割(region growing segmentation)
  3. 什么是大数据,大数据到底应该如何学?
  4. c语言去字母的其中三个,请问这个用c怎么做:输入一串字符,分别统计其中数字和字母的个数...
  5. python怎么测试uwsgi并发量_nginx + uWSGI 为 django 提供高并发
  6. Java基础-----选择结构(一)
  7. 懒人修仙传ce修改方法_盘点《西游记》中增长寿命的6种方法,其中长生不老的方法有三种...
  8. OpenCV精进之路(二十三):实例——Bag of Features(BoF)图像分类实践
  9. JD-GUI(反编译工具)
  10. PRINCE2产品认证报考常见一些问答
  11. 如何用python 对PDF进行拆分,批量修改文件名(根据excel表格)
  12. Python之生成器练习
  13. html中颜色打字机效果,Css打字机效果
  14. pr的安装教程/基础使用
  15. Mac m1 python软件环境安装配置
  16. 云计算学习笔记——第四章 存储虚拟化
  17. server sql 将出生日期转为年龄_SQL中将用户的出生年月转换成对应的年龄
  18. .net 2.0安装包打不开_Android——bilibili缓存视频合并教程[2.0]
  19. 移动web-线性渐变
  20. jQuery遍历对象、数组、集合

热门文章

  1. 进阶项目(9)IIC通信协议程序设计讲解
  2. html dom节点源码,HTML DOM HTML DOM 节点 - 闪电教程JSRUN
  3. 干货分享——产品经理必备的技能:专业技能和软技能。
  4. 机器学习中的数学原理——过拟合、正则化与惩罚函数
  5. 【信息系统项目管理师】第十五章 知识产权与法律法规(考点汇总篇)
  6. ftp文件传输(适用于两台通过网线直连的电脑)
  7. matlab不同版本之间编码出错问题20200825
  8. JAVA语言的介绍和特性
  9. 【PTA】帅到没朋友(C语言)
  10. 正确使用uniapp搭配微信开发者工具自带的骨架屏功能,生成骨架屏