您好,欢迎来到网暖!

当前位置:网暖 » 站长资讯 » 建站基础 » 网络技术 » 文章详细 订阅RssFeed

常用的文本处理工具

来源:网络整理 浏览:211次 时间:2020-08-10

博文大纲:
1)grep命令
2)cut命令
3)sort命令
4)uniq命令
5)tee命令
6)diff命令
7)paste命令
8)tr命令

注意:以下工具均不会对源文件进行修改,只是将结果输出!1) grep命令

grep是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。

常用选项:

-i:忽略大小写;-v:反向查找;-w:精确查找;-o:只输出匹配的关键字;-c:统计匹配到的次数;-n:显示行号;-r:逐层遍历目录进行查找;-A:显示匹配行及后面多少行;-B:显示匹配行及前面多少行;-C:显示匹配行前后多少行;-l:只列出匹配的文件名;-L:列出不匹配的文件名;-e:使用正则匹配;-E:使用扩展正则匹配;^key:以key开头的行;key$:以key结尾的行;^$:匹配空行;--color=auto:将找到的关键字部分加上颜色显示;
2)cut命令

cut是列截取工具,用于列的截取。

常用选项:

-b:仅显示行中指定直接范围的内容;-c:以字符为单位进行分割、截取;-d:指定字段的分隔符,默认的字段分隔符为“TAB”;-f:指定截取的区域,与-d一起使用;

举例:

# cut -d: -f1 1.txt                    #以“:”冒号分割,截取第1列内容# cut -d: -f1,6,7 1.txt                    #以“:”冒号分割,截取第1,6,7列内容# cut -c4 1.txt                  #截取文件中每行的第4个字符# cut -c4-10 1.txt                  #截取文件中每行的第4-10个字符# cut -c4- 1.txt                  #从第4个字符开始截取后面的所有字符
3)sort命令

sort主要用于排序,它将文件的每一行作为一个单位,从首字符向后,依次按ASCII 码值进行比较,左后将他们按升序输出。

常用选项:

-u:去除重复行(无论是否连续的重复行);-r:降序排列,默认是升序;-o:将排序的结果输出到文件中,类似基于重定向符号“>”;-n:以数字排序,默认是按字符排序;-t:分隔符;-k:指定数字,表示第几列;-b:忽略前导空格;-R:随机排序,每次运行的结果都不同;

举例:

# sort -n -t: -k3 123.txt         #将文件以冒号分割的第三列以数字的方式进行排序(升序)# sort -nr -t: -k3 123.txt                 #同上,以降序进行排序# sort -n 123.txt                       #以文件中的第一个字符以数字的方式进行排序# sort -n 123.txt   -o 123.sh       #将排序的输出结果保存到123.sh
4)uniq命令

uniq命令用于报告或忽略文件中的重复行,一般与sort命令结合使用。

常用的选项:

-i:忽略大小写;-c:统计重复次数;-d:只显示重复行;
5)tee命令

tee命令用于将数据重定向到文件,另一方面还可以提供一份重定向数据的副本作为后续命令的stdin。简单的说就是把数据重定向到给定文件和屏幕上。

常用选项:

-a:向文件中重定向时使用追加模式;-i:忽略中断(interrupt)信号。
6) diff命令

diff主要用于逐行比较文件的不同!

注意:diff描述两个文件不同的方式是告诉我们怎样改变第一个文件之后与第二个匹配!

常用选项:

-b:不检查空格;-B:不检查空白行;-i:不检查大小写;-w:忽略所有的空格;--normal:正常格式显示(默认);-c:上下文格式显示;-u:合并格式显示;

举例:

# cat file1aaaa111hello world222333bbb]# cat file2aaahello111222bbb333world
1)正常显示
diff目的:file1如何改变才能和file2匹配# diff file1 file21c1,2               #第一个文件的第1行需要改变才能和第二个文件的第1到2行匹配< aaaa             #小于号“<”表示左边文件(file1)内容---                      #分割符> aaa               #大于号“>”表示右边文件(file2)内容> hello3d3                 #第一个文件的第3行删除后才能和第二个文件的第3行匹配< hello world5d4                  #第一个文件的第5行删除后才能和第二个文件的4行匹配< 3336a6,7           #第一个文件的第6行增加内容后才能和第二个文件的第6到7行匹配> 333           #需要增加的内容在第二个文件里是333和world> world
2)上下文格式显示
# diff -c file1 file2*** file1   2020-02-18 13:46:35.873209160 +0800--- file2   2020-02-18 13:46:54.009174296 +0800***************           #分割符*** 1,6 ****              #以***开头表示file1文件,1,6表示1到6行! aaaa            #!表示该行需要修改才能与第二个文件匹配  111- hello world          #-表示需要删除该行才能与第二个文件匹配  222- 333         #-表示需要删除该行才能与第二个文件匹配  bbb--- 1,7 ----           #以---开头表示file2文件,1,7表示1到7行! aaa                 #表示第一个文件需要修改才能与第二个文件匹配! hello                 #表示第一个文件需要修改才能与第二个文件匹配  111  222  bbb+ 333                #表示第一个文件需要加上该行才能与第二个文件匹配+ world               #表示第一个文件需要加上该行才能与第二个文件匹配
3)合并格式显示
# diff -u file1 file2--- file1   2020-02-18 13:46:35.873209160 +0800+++ file2   2020-02-18 13:46:54.009174296 +0800@@ -1,6 +1,7 @@              #以下是针对file1的改变,与file2相同-aaaa                                     #-表示减少,+表示增加+aaa+hello 111-hello world 222-333 bbb+333+world
4)比较目录的不同
# mkdir dir{1,2}# touch dir1/file{1..5}# touch dir2/file{1..3}# touch dir2/test{1,2}# echo 1111 > dir1/file1# diff  dir1 dir2#默认则会比较相同文件的内容diff dir1/file1 dir2/file11d0< 1111只在 dir1 存在:file4只在 dir1 存在:file5只在 dir2 存在:test1只在 dir2 存在:test2[root@localhost tmp]# diff -q dir1 dir2#如果只需要比较两个目录里文件的不同,不需要进一步比较文件的内容,需添加-q选项文件 dir1/file1 和 dir2/file1 不同只在 dir1 存在:file4只在 dir1 存在:file5只在 dir2 存在:test1只在 dir2 存在:test2
5)小技巧

有时我们需要以一个文件为标准,去修改其他文件,并且修改的内容较多,我们可以通过打补丁的方式完成。

#以下方式修改文件file1的内容与file2的内容一致# diff file1 file2 > file.patch#先找出文件的不同,然后输入到一个文件中(正常显示、上下文、合并的反射光hi都可以)# patch file1 file.patch patching file file1#将不同的内容打补丁到文件中# diff file1 file2#没有返回结果则表示两个文件一致
7)paste命令

paste主要用于合并文件行。

常用选项:

-d:自定义间隔符,默认是tab;-s:串行处理,非并行;

举例:

# cat file1file18888# cat file2file299991111# paste file1 file2        #默认以tab键进行分割file1   file28888    9999    1111# paste -d: file1 file2         #将:作为分割符file1:file28888:9999:1111# paste -s file1 file2         #将file1、file2串行处理file1   8888          #第一行是file1的内容file2   9999    1111              #第二行是file2的内容
8) tr命令

tr用于字符转换、替换和删除,主要用于删除文件中控制字符或进行字符转换!

常用选项:

-d:删除所有属于第一字符集的字符;-s:把连续重复的字符以单独一个字符表示;

常用的正则表达式

如图:
常用的文本处理工具
举例:

# tr -d '[:/]' < 123.txt                   #删除文件中的:和/# cat 123.txt | tr -d '[:/]'               #同上# tr '[0-9]' '@' < 123.txt               #将文件中的数字替换为@符号# tr '[a-z]' '[A-Z]' < 123.txt            #将文件中的小写字符替换为大写字符# tr -s '[a-z]' < 123.txt                  #匹配文件中的小写字母并连续重复的压缩为一个# tr -s '[a-z0-9]' < 123.txt              #匹配文件中的小写字母与数字并将连续重复的小写字母或数字压缩为一个# tr -d '[:digit:]' < 123.txt# tr -d '[0-9]' < 123.txt                    #删除文件中的数字# tr -d '[:blank:]' < 123.txt # tr -d '[ ]' < 123.txt                        #删除文件所有中的(水平)空白字符# tr -d '[:space: ]' < 123.txt            #删除文件中所有的(水平或垂直)空白字符

推荐站点

  • 腾讯腾讯

    腾讯网(www.QQ.com)是中国浏览量最大的中文门户网站,是腾讯公司推出的集新闻信息、互动社区、娱乐产品和基础服务为一体的大型综合门户网站。腾讯网服务于全球华人用户,致力成为最具传播力和互动性,权威、主流、时尚的互联网媒体平台。通过强大的实时新闻和全面深入的信息资讯服务,为中国数以亿计的互联网用户提供富有创意的网上新生活。

    www.qq.com
  • 搜狐搜狐

    搜狐网是全球最大的中文门户网站,为用户提供24小时不间断的最新资讯,及搜索、邮件等网络服务。内容包括全球热点事件、突发新闻、时事评论、热播影视剧、体育赛事、行业动态、生活服务信息,以及论坛、博客、微博、我的搜狐等互动空间。

    www.sohu.com
  • 网易网易

    网易是中国领先的互联网技术公司,为用户提供免费邮箱、游戏、搜索引擎服务,开设新闻、娱乐、体育等30多个内容频道,及博客、视频、论坛等互动交流,网聚人的力量。

    www.163.com
  • 新浪新浪

    新浪网为全球用户24小时提供全面及时的中文资讯,内容覆盖国内外突发新闻事件、体坛赛事、娱乐时尚、产业资讯、实用信息等,设有新闻、体育、娱乐、财经、科技、房产、汽车等30多个内容频道,同时开设博客、视频、论坛等自由互动交流空间。

    www.sina.com.cn
  • 百度一下百度一下

    百度一下,你就知道

    www.baidu.com