文本处理工具

时间:2022-11-18 14:38:20

文件内容



查看文件


1.cat

2.more

3.less


cat

cat命令连接文件并打印到标准输出设备上

cat [OPTION]… [FILE]…

选项

-E:   显示行结束符$
-n:   对显示出的每一行进行编号
-A:  显示所有控制符
-b:  非空行编号
-s:   压缩连续的空行成一行



例子


把last命令的输出重定向到f1文件里面并编号显示


1.    [ root@centos7 ~ ]# last > f1

2.     cat -n f1

3.    1 root pts/0 172.222.222.222 Fri Jul 28 11:45 - 16:38 (04:53)

4.     2 root pts/1 172.222.222.222 Fri Jul 28 08:19 still logged in

5.     3 root pts/0 172.222.222.222 Fri Jul 28 08:12 - 09:59 (01:47)

…….



more

more命令是一个基于vi编辑器文本过滤器

cat [OPTION]… [FILE]…

该命令一次显示一屏文本,满屏后停下来,并且在屏幕的底部出现一个提示信息,
给出至今己显示的该文件的百分比:–More–(XX%)可以用下列不同的方法对提示做出回答:

  • 按Space键:显示文本的下一屏内容。
  • 按Enier键:只显示文本的下一行内容。
  • 按H键:显示帮助屏,该屏上有相关的帮助信息。
  • 按B键:显示上一屏内容。
  • 按Q键:退出rnore命令。

选项

-<数字>:指定每屏显示的行数
-d:显示翻页及退出提示
-c:不进行滚屏操作。每次刷新这个屏屏幕
-s:将多个空行压缩成一行显示
-u:禁止下划线
+<数字>:从指定数字的行开始显示



less

less命令的作用与more十分相似,都可以用来浏览文字档案的内容,不同的是less命令允许用户向前或向后浏览文件,而more命令只能向前浏览。用less命令显示文件时,用PageUp键向上翻页,用PageDown键向下翻页。要退出less程序,应按Q键。

less [OPTION]… [FILE]…

选项
-e:文件内容显示完毕后,自动退出
-f: 强制显示文件
-g:不加亮显示搜索到的所有关键词,仅显示当前显示的关键字,以提高显示速度
-l:搜索时忽略大小写的差异
-N:每一行行首显示行号
-s:将连续多个空行压缩成一行显示
-S:在单行显示较长的内容,而不换行显示
-x<数字>:将TAB字符显示为指定个数的空格字符




文件截取




显示文本前或后行内容


1.head


2.tail


head命令用于显示文件的开头的内容。在默认情况下,head命令显示文件的头10行内容

head [OPTION]… [FILE]…

选项

-c<字符数>:指定显示头部内容的字符数
-v:总是显示文件名的头信息
-q:不显示文件名的头信息
-#: 指定行数


例子


把1 2 3 4 5输入f1中,用head取前3行


1.    cat >f1<<666
2.    >1
3.    >2
4.    >3
5.    >4
6.    >5
7.    >666
8.    cat f1 | head -3
9.     1
10.   2
11.   3




tail

tail命令用于显示文件的尾部的内容。tail命令默认在屏幕上显示指定文件的末尾10行

tail [OPTION]… [FILE]…

选项

-c: 指定获取后#字节
-n: 指定获取后#行
-#: 指定行数
-f: 跟踪显示文件新追加的内容,常用日志监控


例子


把1 2 3 4 5输入f1中,用tail取后3行


  1.    cat >f1<<999
  2.    >1
  3.    >2
  4.    >3
  5.    >4
  6.     >5
  7.    >999
  8.    cat f1 | tail -3
  9.    3
  10.    4
  11.    5




抽取合并文本





按列抽取文本和合并文本


1.cut

2.paste


cut

cut命令用来显示行中的指定部分,删除文件中指定字段。

cut [OPTION]… [FILE]…

选项

-b:仅显示行中指定直接范围的内容
-c:仅显示行中指定范围的字符
-d:指定字段的分隔符,默认的字段分隔符为“TAB”
-f:显示指定字段的内容
-n:与“-b”选项连用,不分割多字节字符
–complement:补足被选择的字节、字符或字段
–out-delimiter=<字段分隔符>:指定输出内容是的字段分割符
–help:显示指令的帮助信息
–version:显示指令的版本信息


例子


显示出/etc/passwd第一列和第三列

  1.    cut -d: -f 1,3 /etc/passwd
  2.    root:0
  3.    bin:1
  4.    daemon:2
  5.    adm:3
    ……


直接显示出centos7的IP地址

  1.    ifconfig ens33 | tr -s ’ ’ ‘:’|head -2|tail -n1|cut -d: -f3
  2.    172.222.222.222


查看分区利用率

  1.    df | tr -s ” ” “%” | cut -d% -f5
  2.    Use
  3.    10
  4.    0
  5.    0
  6.    2
  7.    0
  8.    100
  9.    1
  10.    17
  11.    0



paste

paste命令用于将多个文件按照列队列进行合并

paste [OPTION]… [FILE]…

选项
-d 分隔符:指定分隔符,默认用TAB
-s : 所有行合成一行显示



例子


用paste命令将f1 f2按照列队列进行合并

  1.       paste f1 f2
  2.       1        1
  3.       2        2
  4.       3        3
  5.       4        4
  6.       5        5




分析文本



文本排序



1.wc

2.sort

3.uniq


wc

wc命令用来计算数字。利用wc指令我们可以计算文件的Byte数、字数或是列数,若不指定文件名称,或是所给予的文件名为“-”,则wc指令会从标准输入设备读取数据。

wc [OPTION]… [FILE]…

选项
使用 -l 来只计数行数
使用 -w 来只计数单词总数
使用 -c 来只计数字节总数
使用 -m 来只计数字符总数



例子


显示/etc/passwd里面的行数

  1.    wc -l /etc/passwd
  2.    43 /etc/passwd


sort

sort命令是在Linux里非常有用,它将文件进行排序,并将排序结果标准输出。sort命令既可以从特定的文件,也可以从stdin中获取输入

sort [OPTION]… [FILE]…

选项
-b:忽略每行前面开始出的空格字符
-c:检查文件是否已经按照顺序排序
-d:排序时,处理英文字母、数字及空格字符外,忽略其他的字符
-f:排序时,将小写字母视为大写字母
-i:排序时,除了040至176之间的ASCII字符外,忽略其他的字符
-m:将几个排序号的文件进行合并
-M:将前面3个字母依照月份的缩写进行排序
-n:依照数值的大小排序
-o<输出文件>:将排序后的结果存入制定的文件
-r:以相反的顺序来排序
-t<分隔字符>:指定排序时所用的栏位分隔字符
+<起始栏位>-<结束栏位>:以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位



例子


反方向整理f1数据

  1.    sort -r f1
  2.    5
  3.    4
  4.    3
  5.    2
  6.    1


uniq

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

uniq [OPTION]… [FILE]…

选项
-c: 显示每行重复出现的次数 (把重复的压缩了)
-d: 仅显示重复过的行
-u: 仅显示不曾重复的行



例子


删除重复行

  1.    uniq file.txt
  2.    sort file.txt | uniq
  3.    sort -u file.txt



只显示单一行

  1.    uniq -u file.txt
  2.    sort file.txt |uniq -u




统计各行在文件中出现的次数

  1.    sort file.txt | uniq -c




在文件中找出重复的行

  1.    sort file.txt | uniq -d



文本过滤



三剑客之grep




grep

作用:文本搜索工具,根据用户指定的“模式”对目标文
本逐行进行匹配检查;打印匹配到的行
模式:由正则表达式字符及文本字符所编写的过滤条件

grep [OPTIONS] PATTERN [FILE…]

选项
–color=auto: 对匹配到的文本着色显示
-v: 显示不被pattern匹配到的行
-i: 忽略字符大小写
-n:显示匹配的行号
-c: 统计匹配的行数
-o: 仅显示匹配到的字符串
-q: 静默模式,不输出任何信息
-A #: after, 后#行
-B #: before, 前#行
-C #:context, 前后各#行
-e:实现多个选项间的逻辑or关系 grep –e ‘cat ’ -e ‘dog’ file
- w:匹配整个单词
- E:使用ERE
- F:相当于fgrep,不支持正则表达式



例子


在多个文件中查找abcd

  1.    grep “abcd” f1 f2 f3 f4



显示/proc/meminfo文件中以大小s开头的行(要求:使用两 种方法)

  1.    cat /proc/meminfo | grep ^[Ss].*
  2.    grep -i “^s” /proc/meminfo




显示/etc/passwd文件中不以/bin/bash结尾的行

  1.    grep -v “/bin/bash$” /etc/passwd




显示用户rpc 默认的shell程序

  1.    grep “^rpc:” /etc/passwd | cut -d: -f7




显示CentOS7的/etc/grub2.cfg文件中,至少以一个空白字符开头的且后面存非空白字符的行

  1.    grep -E “^[[:space:]]+[^[:space:]]” /etc/grub2.cfg









                                                                                               感谢指导小白错误之处