文本处理工具概要

文本处理工具概要

1.文本工具

    1.1 tr 转化标准输入
    1.2 wc 统计输出文本信息
    1.3 rev 指定文件复制到标准输出
    1.4 seq 递增打印数字
    1.5 tee 输入复制到输出
    1.6 cat 标准输出文本
    1.7 tac 标准输出把最后一行放入第一行
    1.8 tail 从尾部标准输出文本
    1.9 paste顺序对应的行标准输出
    1.10 sort 文件排序后输出
    1.11 diff 逐行比较文件
    1.12 patch 给文件打补丁
    1.13 head 从首部标准输出文本

1.1 tr [ OPTION ]…[set1] [set2]

    描述: 翻译、压缩和/或删除标准输入的字符,将其写入标注输出

常用选项

-c 取补集
-d 删除键入的值
-dc 删除键入值之外的输入值
-s 相邻的字符压缩成一个字符
-t 严格替换,默认替换时没有自动补一个重复值

单向重定向:
   每次只能输入一次,效率不高

[root@CentOS8 ~]# cat > a.txt








多行重定向:
   可持续输入,键入指定字符后退出

 [root@CentOS8 ~]# cat > a.txt <<EOF
> 
>       
> 
> 
> 
> EOF  #可用其他字符结束,如其他字符但首位相依

1.2 wc [OPTION]… [FILE]…

    描述: 计数单词总数、行总数、字节总数和字符总数可以对文件或STDIN中的数据运行

常用选项

-l 只计数行数
-w 只计数单词总数
-c 只计数字节总数
-m 只计数字符总数
-L 只家属文件中最长行的长度

默认选项

[root@centos7 date]#wc   story.txt
39   37   1901  story.txt
行数  字数   字节数  文件  

1.3 rev [options] [file …]

    描述: 将指定的文件复制到标准输出,颠倒每行字符的顺序。如果没有指定文件,则读取标准输入

常用选项

-v 查看版本号
-h 帮助信息

默认选项

[root@centos7 ~]# cat f9
admin
[root@centos7 ~]# cat f7
adminstrator
[root@centos7 ~]# rev f9 f7
nimda       #交换字符的顺序
rotartsnimd

1.4 seq [OPTION]… LAST

    描述: 按递增的步骤从开始到结束打印数字

常用选项

-f 使用printf样式的浮点格式输出
-s 使用字符串分隔数字(默认值:\n)
-w 用前导零填充使宽度相等

默认选项

[root@centos7 ~]# seq -s + 100
1+2+3+4+5+6+7+8+9+10+11+12+13+14+15+16+17+18+19+20+21+22+23+24+25+26+27+28+29+30+31+32+33+34+35+36+37+38+39+40+41+42+43+44+45+46+47+48+49+50+51+52+53+54+55+56+57+58+59+60+61+62+63+64+65+66+67+68+69+70+71+72+73+74+75+76+77+78+79+80+81+82+83+84+85+86+87+88+89+90+91+92+93+94+95+96+97+98+99+100

1.5 tee [OPTION]… [FILE]…

    描述: 将标准输入复制到每个文件,也复制到标准输出。

常用选项

-a 追加但不覆盖
-i 忽略中断信息

默认选项

[root@centos7 ~]# cat f7
adminstrator
[root@centos7 ~]# tee f7
admin
admin
^C
[root@centos7 ~]# cat f7  不加参数默认覆盖源数据
admin                     # 可加选项-a追加

[root@centos7 ~]# tee -i  f7     
admin1 
admin1
admin2
admin2
^C               #手动终止信息,继续执行

^C

^C^C^C

^C^C^C^C^C^C^C

1.6 cat [option] … [file]…

    描述: 将文件连接到标准输出。
如果没有文件,或者当文件为-时,读取标准输入。

常用选项

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

默认选项

[root@centos7 ~]# cat f7
admin1
admin2

1.7 tac [OPTION]… [FILE]…

    描述: 将每个文件写入标准输出,最后一行放在前面。如果没有文件,或者当文件为-时,读取标准输入。长选项的强制性参数对于短选项也是必需的

常用选项

-b 在前面而不是后面附加分隔符
-r 分隔符解释为正则表达式
-s --separator=STRING 使用字符串而不是换行符作为分隔符

默认选项

[root@centos7 ~]# cat f9
f91
f92
[root@centos7 ~]# tac f9
f92
f91
[root@centos7 ~]# cat f9  #仅显示一次不改变原数据
f91
f92

1.8 tail [option]…[FILE]…

    描述: 将每个文件的最后10行打印到标准输出。如果有多个文件,则在每个文件前面加上给出文件名的头。如果没有文件,或者当文件为-时,读取标准输入。长选项的强制性参数对于短选项也是必需的

常用选项

-c 指定获取后#字节
-n 指定获取后#行
-# 指定行数
-f 追踪显示文件描述符fd新追加的内容,常用日志监控(相当于 --follow=descriptor)
-F 跟踪文件名,(相当于 --follow=name --retry)
注:  tailf 类似tail -f , 当文件不增长时并不访问文件

默认选项

[root@centos7 ~]# tail -f /var/log/nginx/access.log  #如监控nginx访问日志
192.168.146.129 - - [24/Aug/2019:23:06:24 +0800] "GET /web1/ HTTP/1.0" 502 494 "-" "curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh2/1.4.2"
192.168.146.130 - - [24/Aug/2019:23:06:24 +0800] "GET /web1/ HTTP/1.1" 502 494 "-" "curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh2/1.4.2"
192.168.146.129 - - [24/Aug/2019:23:07:24 +0800] "GET /web1/ HTTP/1.0" 502 494 "-" "curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh2/1.4.2"
192.168.146.129 - - [24/Aug/2019:23:07:24 +0800] "GET /web1/ HTTP/1.0" 502 494 "-" "curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh2/1.4.2"
192.168.146.129 - - [24/Aug/2019:23:07:24 +0800] "GET /web1/ HTTP/1.0" 502 494 "-" "curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh2/1.4.2"
192.168.146.129 - - [24/Aug/2019:23:07:24 +0800] "GET /web1/ HTTP/1.0" 502 494 "-" "curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh2/1.4.2"
192.168.146.129 - - [24/Aug/2019:23:07:24 +0800] "GET /web1/ HTTP/1.0" 502 494 "-" "curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh2/1.4.2"
192.168.146.129 - - [24/Aug/2019:23:07:24 +0800] "GET /web1/ HTTP/1.0" 502 494 "-" "curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh2/1.4.2"
192.168.146.130 - - [24/Aug/2019:23:07:24 +0800] "GET /web1/ HTTP/1.1" 502 494 "-" "curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh2/1.4.2"
192.168.146.130 - - [24/Aug/2019:23:08:24 +0800] "GET /web1/ HTTP/1.1" 502 494 "-" "curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh2/1.4.2"

1.9 paste [OPTION]…[FILE]

    描述: 将每个文件中按顺序对应的行(用制表符分隔)写入标准输出。如果没有文件,或者当文件为-时,读取标准输入。长选项的强制性参数对于短选项也是必需的(合并两个文件同行号的列到一行)

常用选项

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

默认选项

[root@centos7 ~]# cat f9
admin
[root@centos7 ~]# cat f10
administrator
[root@centos7 ~]# paste f9 f10
admin   administrator

1.10 diff [OPTION]… FILES

    描述: 逐行比较文件。长选项的强制性参数对于短选项也是必需的

常用选项

-u 统一上下文的输出行数(默认3行)
-q 当文件有不同时报告
-c 复制上下文的输出行数(默认3行)
-s 当两个文件相同时报告

默认选项

[root@centos7 ~]# diff f9 f10
1c1
< admin
---
> administrator

1.11 sort [OPTION]… FILES

    描述: 将所有文件的排序连接写入标准输出。长选项的强制性参数对于短选项也是必需的

常用选项

-r 执行反方向(由上至下)的整理
-R 随机排序
-n 执行按数字大小整理
-f 选项忽略(fold)字符串中的字符大小写
-u 选项(独特,unique)删除输出中的重复行
-t c 选项使用c做为字段界定符
-k X 选项按照使用c字符分隔的X列来整理能够使用多次

默认选项

[root@centos7 ~]# sort f2 -rn #按数值倒叙排序
10
9
8
7
6
5
4
3
2
1

1.12 patch [options] [originalfile [patchfile]]

    描述: patch采用补丁文件patchfile,其中包含由diff程序生成的差异列表,并将这些差异应用于一个或多个原始文件,从而生成补丁版本。通常情况下,修补过的版本会取代原来的版本。

常用选项

-b 打补丁时备份该文件
-c 区分补丁文件普通的上下文差异。
-d 在执行任何其他操作之前,立即切换到目录dir。
-e 将补丁文件解释为ed脚本。

默认选项

#patch -b a.txt diff.log  自动备份改变了的文件
patching file a.txt

结合1.11和1.12比较两个文件之间的区别,并根据一个文件找回删除后的文件

#diff -u a.txt b.txt > difff.log 比较两个文件的差别
#rm -rf b.txt
#patch -b a.txt diff.log  自动备份改变了的文件
patching file a.txt

1.13 head [OPTION]… [FILE]…

    描述: 将每个文件的前10行打印到标准输出。如果有多个文件,则在每个文件前面加上给出文件名的头。没有文件时,或当文件为-时,读取标准输入。长选项的强制性参数对于短选项也是必需的

常用选项

-c 打印每个文件的前K个字节;以“-”开头,打印每个文件的最后K个字节以外的所有字节
-n 打印前K行而不是前10行;以“-”开头,打印每个文件的最后K行以外的所有行
-q 永远不要打印标题给出文件名

默认选项

[root@centos7 ~]# head /var/log/messages
Sep 29 03:19:02 zbxmaster rsyslogd: [origin software="rsyslogd" swVersion="8.24.0-34.el7" x-pid="1060" x-info="http://www.rsyslog.com"] rsyslogd was HUPed
Sep 29 03:19:06 zbxmaster systemd: Removed slice User Slice of root.
Sep 29 03:20:01 zbxmaster systemd: Created slice User Slice of root.
Sep 29 03:20:01 zbxmaster systemd: Started Session 27 of user root.
Sep 29 03:20:01 zbxmaster systemd: Removed slice User Slice of root.
Sep 29 03:30:01 zbxmaster systemd: Created slice User Slice of root.
Sep 29 03:30:01 zbxmaster systemd: Started Session 28 of user root.
Sep 29 03:30:02 zbxmaster systemd: Removed slice User Slice of root.
Sep 29 03:40:01 zbxmaster systemd: Created slice User Slice of root.
Sep 29 03:40:01 zbxmaster systemd: Started Session 29 of user root.

3:30:01 zbxmaster systemd: Started Session 28 of user root.
Sep 29 03:30:02 zbxmaster systemd: Removed slice User Slice of root.
Sep 29 03:40:01 zbxmaster systemd: Created slice User Slice of root.
Sep 29 03:40:01 zbxmaster systemd: Started Session 29 of user root.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值