文本处理命令在Linux的使用过程中也是很基础的知识,我来总结一下linux文本处理命令的使用。
基础命令:
cat / more / less / grep / head / tail / wc / uniq / cut / sort / join / paste tr / tee / split / spell / diff / printf /
1.cat 连接文件并显示内容
-n 对输出的文本进行编号
-b 对输出的文本进行编号,但是不对空白行编号
-s 将两行以上的空白行替换为一行空白行
-E 在每一行的结尾显示“$”
-T 用“^”I代替“TAB”作为显示
2.more 文件内容分屏查看
-d 当用户错误输入时产生提示符
-f 计算实际行数
-p 不卷页显示,而是清屏,然后显示内容
+/搜寻指定字符串,并从此处开始显示
+num 从指定行开始显示
3.less分屏显示文件内容-e 当文件显示结束后,自动离开
-f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件
-g 只标志最后搜索的关键词
-i 忽略搜索时的大小写
-m 显示类似more命令的百分比
-N 显示每行的行号
-o 将less 输出的内容在指定文件中保存起来
选择参数
按键功能如下:
b 向后翻一页
d 向后翻半页
h 显示帮助界面
Q 退出less 命令
u 向前滚动半页
y 向前滚动一行
空格键 滚动一行
回车键 滚动一页
4.head 显示文件头部内容
将打印文件的前10行道标准输出,如果不指定文件,将从标准输入中输入
-c 显示文件前N字节数
-n 显示文件的前N行数
5.tail 输出文件尾部内容-f 循环读取,当文件内容增加时,持续显示新增在后面的内容,常用来监控日志文件
-q 不显示处理信息
-v 显示详细的处理信息
-c 显示的字节数
6.wc 统计文件的字节数,单词数和行数
-c 显示字母数
-l 显示行数
-w 显示单词数
7.uniq 报告或忽略文件中的重复行
-c 显示重复次数
-d 显示重复行
-u 显示没有重复的行
8.cut 剪切删除文件中的指定段
-b= 只输出指定的字节数
-c= 只输出指定的字符
-d= 使用定界符代替TAB键
-f= 只输出指定的域。
9.sort 对文件进行行排序
-b 忽略行前的空格
-c 检查是否已排序过
-d 排序时只识别英文数字及空格
-f 把小写字母看作大写字母
-m 合并排序好的文件
-n 按照数值排序
-r 逆序排序
10 join 文件1 文件2
针对每一对具有相同内容的输入行,整合为一行写到标准输出,
默认的内容连接区块是由第一个空白符代表的分界符号。当文件1
或文件2 都被指定为"-"时,程序将从标准输入读取数据。
将两个文件
内容相同的行连接起来
root@snail-hnlinux:~# cat test1 //显示文件test1 的内容
a 01
b 02
c 03
d 04
e 05
root@snail-hnlinux:~# cat test2 //显示文件test2 的内容
a xxx
b www
c jjj
d kkk
e lll
root@snail-hnlinux:~#
root@snail-hnlinux:~# join test1 test2 //连接两个文件
a 01 xxx
b 02 www
c 03 jjj
d 04 kkk
e 05 lll
root@snail-hnlinux:~# join test2 test1
a xxx 01
b www 02
c jjj 03
d kkk 04
e lll 05
11.split 将大文件切割成为小文件-d 使用数字而不是字母作为切割后的小文件的后缀;
-v 显示详细的处理信息
-b 每个分割文件的大小
-l 指定切割的行数作为切割文件的单位;
-C 指定输出到每一个文件的每一行的大小,数字后缀可以是
b: 512(blocks)
K: 1024(kibiBytes)
KB: 1000(kiloBytes)
M: 1024*1024(mebiBytes)
MB: 1000*1000(megaBytes)
G: 1024*1024*1024(gibiBytes)
GB: 1000*1000*1000(gibaBytes)
12.tr从标准输入中替换、缩减和/或删除字符,并将结果写到标准输出。-d, --delete 删除匹配SET1 的内容,并不作替换
-s, --squeeze-repeats 如果匹配于SET1 的字符在输入序列中存在连续的
重复,在替换时会被统一缩为一个字符的长度
-t, --truncate-set1 先将SET1 的长度截为和SET2 相等
SET 是一组字符串,一般都可按照字面含义理解。解析序列如下:
\NNN 八进制值为NNN 的字符(1 至3 个数位)
\\ 反斜杠
\a 终端鸣响
\b 退格
\f 换页
\n 换行
\r 回车
\t 水平制表符
\v 垂直制表符
字符1-字符2 从字符1 到字符2 的升序递增过程中经历的所有字符
[字符*] 在SET2 中适用,指定字符会被连续复制直到吻合设置1 的长度
[字符*次数] 对字符执行指定次数的复制,若次数以 0 开头则被视为八进制数
[:alnum:] 所有的字母和数字
[:alpha:] 所有的字母
[:blank:] 所有呈水平排列的空白字符
[:cntrl:] 所有的控制字符
[:digit:] 所有的数字
[:graph:] 所有的可打印字符,不包括空格
[:lower:] 所有的小写字母
[:print:] 所有的可打印字符,包括空格
[:punct:] 所有的标点字符
[:space:] 所有呈水平或垂直排列的空白字符
[:upper:] 所有的大写字母
[:xdigit:] 所有的十六进制数
[=字符=] 所有和指定字符相等的字符
13 tee 将输入的内容复制到标准输出。
14 paste 会把每个文件以列对列的方式,一列列地加以合并
-d 指定间隔字符
[root@hnlinux lx138.com]# cat a.txt //合并文件的列
123
456
789
1010
10000
111111
000000
5555555
6666666
[root@hnlinux lx138.com]# cat b.txt //合并文件的列
aaa
bbb
bbb
bsss
ssss
weeee
rrrrrr
jjjjjjj
ooooooo
[root@hnlinux lx138.com]# paste a.txt b.txt //合并文件的列
123aaa
456bbb
789bbb
1010bsss
10000ssss
111111weeee
000000rrrrrr
5555555jjjjjjj
6666666ooooooo
[root@hnlinux lx138.com]#
15 diff以逐行的方式,比较文本文件的异同处。所是指定要比较目录,则diff会比较目录中相同文件名的文件,但不会比较其中子目录-b 忽略空格
-B 忽略空白行
-i 忽略大小写
--brief 只报告两个文件是否相同,不报告详细的不同信息
-c 使用上下文输出格式
-d 改变算法,使得diff命令可能找到一个更小的文件差异
-e 产生一个将文件1变成文件2的“ed script”
-r 比较目录时递归比较子目录
-q 不报告差异,只说明两者内容是否有差异
-s 当比较的两个文件相同时报告信息