cat
cat [OPTION]... [FILE]...
-E:显示行结束符$
-n:对显示出的每一行进行编号
-A:显示所有控制符
-b:非空行编号
-s:压缩连续的空行成一行
[root@centos7 ~]#cat -b /data/f1.txt
1 ddnnchddbc
2 cwfwe
3 dwefj
[root@centos7 ~]#nl /data/f1.txt
1 ddnnchddbc
2 cwfwe
3 dwefj
有时候从windows上传文件到linux由于文件系统的原因,会有变化,这个比较常用;显示所有控制符 cat -A FileName
tac
它与cat正好相反,从下面的例子可以看出,它是以一行作为一个单元,倒序排列显示
#cat f1.txt
ddnnchddbc
cwfwe
dwefj
#tac f1.txt
dwefj
cwfwe
ddnnchddbc
rev
它是以每个字符为一个单位,在一行上进行倒叙排列显示
#rev f1.txt
cbddhcnndd
ewfwc
jfewd
分页查看文件内容
more:分页查看文件
-d:显示翻页及退出提示
less:一页一页地查看文件或者STDIN输出,man帮助底层使用的分页器就是less
/文本 搜索
显示文本前N行或者后行内容
head
head [OPTION]... [FILE]...
-c N 指定截取前N字节
#ifconfig |head -c 3
ens
-n N 指定截取前N行
#ifconfig |head -n 4
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.48.106 netmask 255.255.255.0 broadcast 192.168.48.255
inet6 fe80::a425:953d:896d:db0c prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:d1:13:0f txqueuelen 1000 (Ethernet)
-N 指定行数 同上一个相同含义
tail
tail [OPTION]... [FILE]...
-c N指定获取后N字节
-n N指定获取后N行
-N 同head中一样的规定
-f --follow 跟踪显示文件fd新追加的内容,常用日志监控
-F 跟踪文件名
-f 与-F的区别;
-f 跟踪的是文件的描述符,如果文件删除,通过tail -f 看不出来,且重新新建并不能追踪到。
-F 跟踪的是文件名称,如果文件状态发生变化,会将信息实时输出出来
tailf 类似tail –f,当文件不增长时并不访问文件;平时用的·比较多的是 tail -1000f 指定输出文件后1000行
随机截取某个文件的指定字节
tr -dc '[:alnum:]' < /dev/urandom |head -c10
tail -f /data/f1.txt 是根据文件标识符来监控,如果文件删除,并不会提示
pidof tail 可以查看进程编号
ls /proc/`pidof tail `/fd -l fd 表示的是文件描述符
cut 按列抽取文本
cut [OPTION]... [FILE]...
-d DELIMITER: 指明分隔符,默认tab
-f FILEDS(区域):
N:第N个字段
离散使用:1,3,6
混合使用:1-3,7
-c 按照字符切割
--output-delimiter=STRING指定输出分隔符;比如按照 &号指定并输出
截图前3个字段,并且修改输出的分隔符
cut -d: -f1,3 --output-delimiter=";" /etc/passwd
使用cut取ip
ifconfig ens33 |head -n2|tail -n1 |tr -s " "|cut -d" " -f3
paste 合并两个文件同行号的列到一行
paste [OPTION]... [FILE]...
-d 分隔符:指定分隔符,默认用TAB
-s : 所有行合成一行显示
#cat f1.txt
ddnnchddbc
cwfwe
dwefj
#cat f2.txt
adnajsac
fwdfjkwh
wfwejfhwiuhy
dsmfkh
#paste f1.txt f2.txt
ddnnchddbc adnajsac
cwfwe fwdfjkwh
dwefj wfwejfhwiuhy
dsmfkh
对比cat;
#cat f1.txt f2.txt
ddnnchddbc
cwfwe
dwefj
adnajsac
fwdfjkwh
wfwejfhwiuhy
dsmfkh
可以看出cat相当于是追加 >> ;paste是以将同行号的列整合到一行
分析文本工具
文本数据统计:wc
整理文本:sort
比较文件:diff和patch
wc 收集文本统计数据
计数单词总数、行总数、字节总数和字符总数
常用选项
-l 只计数行数
-w 只计数单词总数
-c 只计数字节总数
-m只计数字符总数
-L 显示文件中最长行的长度(字节)
[root@centos7 data]#wc f1.txt
3 3 23 f1.txt
行数 字数 字节数
sort 文本排序
sort [options] file(s)
常用选项
-r 倒序排
-R 随机排序
-n 执行按数字大小整理
-f 选项忽略(fold)字符串中的字符大小写
-u 选项(独特,unique)删除输出中的重复行
-t c 选项使用c做为字段界定符
-k X 选项按照使用c字符分隔的X列来整理能够使用多次
uniq 从输入中删除前后连续的重复的行,隔行重复不算重复
uniq [OPTION]... [FILE]...
uniq FileName 默认去掉重复的行
uniq -c 显示每行重复出现的次数
uniq -d 仅显示重复过的行
#uniq -c f3.txt
1 s
1 d
3 c
1 k
1 f
2 k
#uniq -d f3.txt
c
k
可以和sort搭配一起使用
#sort f3.txt |uniq -c
3 c
1 d
1 f
3 k
1 s
diff 比较两个文件之间的区别
含义:diff描述的是两个文件不同方式,怎样通过改变第一个文件之后与第二个匹配
#diff f2.txt f3.txt
1,4c1,10
< adnajsac
< fwdfjkwh
< wfwejfhwiuhy
< dsmfkh
---
> s
> d
> c
> c
> c
> k
> f
> k
> k
其中;第一行 1,4c1,10 表示的是第一个文件的行1-4,中间字母c 表示需要在第一个文件上操作
(a=add,c=change,d=delete) ,后面数字1,10表示第二个文件的行;主要意思是第一个文件的[1,4]行修改才与第一个文件的[1,10]相匹配
前面带 < 的部分表示左边f2.txt文件行的内容, 带> 的部分表示右边文件f3.txt行的内容。--- 则是两个文件内容的分隔符号
diff 命令的输出被保存在一种叫做“补丁”的文件中
使用 -u 选项来输出“统一的(unified)”diff格式文件,最适用于补丁文件
#diff -u f2.txt f3.txt
--- f2.txt 2020-08-09 18:13:05.452670110 +0800
+++ f3.txt 2020-08-10 20:46:50.784969691 +0800
@@ -1,4 +1,10 @@
-adnajsac
-fwdfjkwh
-wfwejfhwiuhy
-dsmfkh
+s
+d
+c
+c
+c
+k
+f
+k
+k
+
- 表示删除f2.txt中的字符,才能与f3.txt匹配
+表示增加f2.txt中的字符,才能与放.txt匹配
统计当前主机被连接次数最多的请求;
#netstat -nt|tr -s " " :|cut -d: -f6|sort -nr|head -3
192.168.48.1
192.168.48.1
Foreign