文章目录
1. wc-文件数据统计
- -l 获取行号
- -c 获取byte数
- -w 获取单词数
- -m 获取字符数
例子:
-
- wc -l test.txt 查看test.txt的行数
2. awk-筛选指定行
依次处理文件的每一行,并读取里面的每一个字段
-
基本语法
-
常量(NR,NF)
-
函数
-
条件
-
if/else
-
- 基本操作1:
awk 动作 文件名
awk '{print $0}' demo.txt
注:
- 默认按空格和制表符分割字段,awk -F ','可以指定分割字段,上述指定‘,’作为分割
- $1,$2分别代表第一个字段和第二个字段
-
- 基本操作2:
awk '条件 动作' 文件名
注:条件指定
awk -F ',' -v OFS=',' '$5=="ab" {print}' test.txt
上述操作:每行按','分割字段(-F ','),打印(print)第五个字段为ab($5=="ab")的行(print后面没有指定具体的列), -v OFS=','指定输出分隔符
-
- 基本操作3:去重
awk '!a[$0]++' test.txt
注:a[]数组,$0整行;第一次a[$0]为空,为假;a[$0]++后有值,为真,!a[$0]++取反。另外$0是整行,也可以换成具体的行。
3. sort-排序,去重
- -t 指定分隔符
- -r 相反的顺序,默认升序
- -u 按指定位置值去重
例子:
-
- sort -t ‘,’ -k 2 按‘,’分割,按k2字段升序排列
-
- 重复的多行记为一行
sort file |uniq
- 重复的多行记为一行
-
- 重复的行全部去掉
sort file |uniq -u
- 重复的行全部去掉
4. uniq-删除邻近重复出现的行
- -c 出现次数
- -u 只打印不重复行
- -d 出现重复的行
- -w 指定需要比较字符长度,从前面算起
例子:
- 删除邻近重复出现的值:uniq test.csv
- 统计出现次数:uniq -c test.csv(不邻近不算)
- 指定需要比对的字符位置:uniq -w2 test.csv (只比较前面两个字符)
5. cat-合并文件
5.1. 两个文件合并
-
- 一个文件在上,一个文件在下
cat file1 file2 > file3
- 一个文件在上,一个文件在下
-
- 一个文件在左,一个文件在右
paste file1 file2 > file3
- 一个文件在左,一个文件在右
5.2. 两个文件的交集、并集(前提条件:每个文件中不得有重复 也可以是多个文件)
-
- 取出两个文件的并集(重复的行只保留一份)
cat file1 file2 | sort | uniq > file3
- 取出两个文件的并集(重复的行只保留一份)
-
- 取出两个文件的交集(只留下同时存在于两个文件中的文件)
cat file1 file2 | sort | uniq -d > file3
- 取出两个文件的交集(只留下同时存在于两个文件中的文件)
-
- 删除交集,留下其他的行
cat file1 file2 | sort | uniq -u > file3
- 删除交集,留下其他的行
6. dos文件转为unix
使用vi 查看文件末尾有^M
dos2unix filename
本文详细介绍Linux下wc、awk、sort、uniq、cat等命令的高级用法,包括数据统计、筛选指定行、排序去重、合并文件及转换文件格式等实用技巧。
1912

被折叠的 条评论
为什么被折叠?



