数据操作常用命令sort、paste、awk

场景:很多时候我们需要对已经有的文件进行排序、拼接或者截取其中的部分列,对于使用mac的同学可以快速通过Linux命令来实现

1、对于文件中指定列进行排序然后输入到新文件中

sort -n -k 3 -t , allTopData.csv -o allTopData2.csv

 

2、两个相同行数的文件进行拼接并输出到新文件中

paste allTopData2.csv driverToken2.csv > result.csv

 

3、截取文件部分列并输出到新文件中
awk -F "," '{print $1, $3 }' result.csv > completefile.csv  

其实也可以打乱列的顺序

awk -F "," '{print $3,$2,$1}' result.csv > completefile333.csv

 

 

其他:

1、如果是取数据集可参考:https://blog.csdn.net/dezi1550/article/details/101481353

集合操作
 1. 取出两个文件的并集(重复的行只保留一份) 

cat file1 file2 | sort | uniq

2. 取出两个文件的交集(只留下同时存在于两个文件中的文件)

cat file1 file2 | sort | uniq -d

3. 删除交集,留下其他的行

cat file1 file2 | sort | uniq -u

 

2、结果输出到文件

查询结果输出到文件

1. 仅转向不显示

(1)ls > test.txt       把输出转向到指定的文件,如文件已存在的话也会重新写入,文件原内容不会保留

(2)ls >> test.txt     是把输出附向到文件的后面,文件原内容会保留下来

2. 转向同时显示

ls | tee ls_tee.txt     把输出转向到指定的文件,同时显示,原文件内容不保存

ls | tee ls_tee.txt     原文件内容保存

 

3、文件打乱操作

将datadaluan.csv文件行数打乱,然后输入到datadaluan2.csv文件中

 shuf datadaluan.csv -o datadaluan2.csv

 

4、将文件分割成多个文件

有时候我们打乱文件后需要分割成多个文件,分割文件可以按照大小来分割,也可以按照行数来分割

按照行来切割:split  -l 50 datadaluan2.csv ./datadaluan2. 

按照大小来切割:split  -b 10k datadaluan2.csv ./datadaluan2. 

问题:最后的结果文件不能指定格式,比如我想要csv文件,如果是下面这种格式的我可能就不能直接打开了,但是通过Linux命令是可以的

 

 思考:如何合并文件呢?这个在我们日常的工作中有啥作用不?

 

5、同一文件删除行重复数据

参考:https://blog.csdn.net/weixin_43314519/article/details/109741706

 

6、同一行中某个字段重复的删除

 

7、包含指定字段的行删除

 

 

 

 

 

posted @ 2022-01-12 14:32  gina_qq  阅读(221)  评论(0)    收藏  举报