文本处理工具
1.grep
grep是行过滤工具,通过关键词查找到指定文件中符合条件的行
语法和选项
语法:
grep 选项 关键字 文件名
可以不带选项
选项:
-n:显示行号
-i:不区分大小写
-v:查找不含关键词的行,反向过滤
-o:打印匹配关键字
-w:按单词搜索
-c:统计匹配到的行数
-A:显示匹配的行并显示后面多少行
-B:显示匹配的行并显示前面多少行
-C:显示匹配的行并显示前后多少行
-l:只列出匹配的文件名
-L:列出不匹配的文件名
-e:使用正则匹配
-E:使用扩展正则匹配
^key:查找以关键字开头的行
key$:查找以关键字结尾的行
2.cut
cut是列截取工具,用于列截取
语法和选项
语法:
cut 选项 文件名
选项:
-c:以字符为单位分割或截取
-d:自定义分割符,默认制表符\t
-f:与-d一起使用,设置截取哪个区域
示例:
cut -c3-10 hahah
截取hahah文件中每行第3-10个字符
cut -c1- hahah
从第1个字符开始截取后面所有字符
cut -d: -f1,6,7 hahah
以:分割,截取第1,6,7列内容
3.sort
sort工具用于排序;它将文件的每一行作为一个单位,从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。
语法和选项
语法:
sort 选项 文件名
选项:
-u:去除重复行
-r:降序排列,默认是升序
-t:分隔符
-k:第N列
-n:以数字排列,默认以字符排列
-o:将排序结果输出到文件中
-b:忽略前导空格
-R:随机排序
4.uniq
uniq用于去除连续的重复行
语法和选项
语法:
uniq 选项 文件名
可以不带选项
选项:
-i:不区分大小写
-c:统计连续重复行次数
-d:只显示重复行
5.tee
tee工具常用于将输入的数据同时输出到标准输出(通常是终端)和一个或多个文件。它常用于将命令的输出既显示在屏幕上,又保存到文件中,便于后续查看或处理。
语法:
command | tee filename
或
command | tee -a filename
command是你要执行的命令,filename是你希望保存输出的文件名。
-a:追加输出
选项:
-a:追加,如果不带-a选项就是覆盖文件的内容
6.diff
diff工具用于逐行比较文件的不同
注意:diff描述两个文件不同的方式是告诉我们怎样改变第一个文件之后与第二个文件匹配。
语法和选项
语法:
diff 选项 文件1 文件2
可以不带选项
选项:
-b:不检查空格
-B:不检查空白行
-i:不检查大小写
-w:忽略所有的空格
--normal 正常格式显示(默认)
-c:上下文格式显示
-u:合并格式显示
默认情况下也会比较两个目录里相同文件的内容
diff 文件夹1 文件夹2
如果只需要比较两个目录里文件的不同,不需要进一步比较文件内容,需要加-q选项
diff -q 文件夹1 文件夹2
有时候我们需要以一个文件为标准,去修改其他文件,并且修改的地方较多时,我们可以通过打补丁的方式完成。
(1)先找出文件不同,然后输出到一个文件
diff -uN file1 file2 > file.patch
-u:合并模式
-N:将不存在的文件当作空文件
(2)将不同内容打补丁到文件
patch file1 file.patch
(3)测试验证
diff file1 file2
7.paste
paste工具用于合并文件行
语法和选项
语法:
paste 选项 文件夹1 文件夹2
选项可以不写
选项:
-d:自定义间隔符,默认是tab(俩空格 制表符)
-s:串行处理,非并行
8.tr
tr工具用于字符转换或删除
语法:
tr [OPTION] SET1 [SET2]
SET1 : 定义要替换或删除的字符集合。
SET2 : 可选,定义要替换成的字符集合。
选项:
-d 删除字符串中所有输入字符。
-s 删除所有重复出现字符序列,只保留第一个;即将重复出现字符串压缩为一个字符串
常匹配字符串:
a-z:匹配所有小写字母
A-Z:匹配所有大写字母
0-9:匹配所有数字
a-zA-Z0-9:匹配所有字母和数字
[:alnum:]:匹配所有字母和数字
[:alpha:]:匹配所有字母
[:blank:]:所有水平空白
[:punct:]:匹配所有标点符号
[:space:]:所有水平或垂直的空格
示例:
假设我们有一个字符串 hello world ,要将空格替换为制表符( \t ),可以使用以下命令:
echo "hello world" | tr ' ' '\t'