Linux 小技巧1

目录

  • 一. 统计文件的总行数
  • 二. 获取从第二行开始的内容
  • 三. 合并两个文件为一个文件
  • 四. 统计指定列唯一值的数量
  • 五. 列出文件的绝对路径
  • 六. 获取除了空白行和注释之外的部分


一. 统计文件的总行数

⏹非压缩文件

  • 统计当前文件夹下csv文件的行数
wc -l ./*.csv
  • 统计指定文件夹下csv文件的行数
    • -maxdepth 2:指定查找的文件夹的层级
find ./ -maxdepth 2 -type f -name *.csv | xargs wc -l

⏹压缩文件

  • 使用zact命令,可在不解压的情况下直接查看压缩文件的内容
zcat ./*.csv.zip | nkf -w8 | wc -l
  • 若存在多个zip文件,可先将每个zip文件的行数输出到一个文本文件中
  • 然后使用awk命令进行合计;或者复制到Excel中进行合计
    • awk '{sum += $1} END {print "总和:", sum}' ./result.txt
# 获取出当前路径下的zip文件
fengyehong@ubuntu:~/jmw_work_space/20240421$ ls -l *.zip
-rw-rw-r-- 1 fengyehong fengyehong 197454 Apr 21 02:16 CBC_SystemLog.log.zip
-rw-rw-r-- 1 fengyehong fengyehong    484 Apr 21 02:10 file1.txt.zip
-rw-rw-r-- 1 fengyehong fengyehong    464 Apr 21 02:11 file2.txt.zip# 获取出zip文件的绝对路径
fengyehong@ubuntu:~/jmw_work_space/20240421$ ls *.zip | sed "s:^:`pwd`/:"
/home/fengyehong/jmw_work_space/20240421/CBC_SystemLog.log.zip
/home/fengyehong/jmw_work_space/20240421/file1.txt.zip
/home/fengyehong/jmw_work_space/20240421/file2.txt.zip# 使用vi编辑脚本文件
fengyehong@ubuntu:~/jmw_work_space/20240421$ vi count.sh# 查看编辑好的内容
fengyehong@ubuntu:~/jmw_work_space/20240421$ cat count.sh
zcat /home/fengyehong/jmw_work_space/20240421/CBC_SystemLog.log.zip | nkf -w8 | wc -l
zcat /home/fengyehong/jmw_work_space/20240421/file1.txt.zip | nkf -w8 | wc -l
zcat /home/fengyehong/jmw_work_space/20240421/file2.txt.zip | nkf -w8 | wc -l# 执行脚本,输出结果到新文件中
fengyehong@ubuntu:~/jmw_work_space/20240421$ sh count.sh > result.txt# 查看统计的结果
fengyehong@ubuntu:~/jmw_work_space/20240421$ cat result.txt
18612
7
7# 统计全部zip文件的总行数
fengyehong@ubuntu:~/jmw_work_space/20240421$ awk '{sum += $1} END {print "总和:", sum}' ./result.txt
总和: 18626

二. 获取从第二行开始的内容

  • tail -n +2 file1.txt
# cat命令获取文件的全部内容
fengyehong@ubuntu:~/jmw_work_space/20240421$ cat file1.txt
ID,方式1,姓名,组,memberID,电话号码,方式2,消耗时间,结果code
110120,SPLREQUEST,東川雄一,AAA,memberID=1,tel=080-1111-1111,SPLEND,ExecTime=200,ResultCode=200
123456,SPLREQUEST,西村祐二,BBB,memberID=2,tel=080-2222-2222,SPLEND,ExecTime=300,ResultCode=200
123444,SPLREQUEST,南山裕三,CCC,memberID=3,tel=080-3333-3333,SPLEND,ExecTime=200,ResultCode=200# tail命令获取从第二行开始的内容(相当于去掉表头)
fengyehong@ubuntu:~/jmw_work_space/20240421$ tail -n +2 file1.txt
110120,SPLREQUEST,東川雄一,AAA,memberID=1,tel=080-1111-1111,SPLEND,ExecTime=200,ResultCode=200
123456,SPLREQUEST,西村祐二,BBB,memberID=2,tel=080-2222-2222,SPLEND,ExecTime=300,ResultCode=200
123444,SPLREQUEST,南山裕三,CCC,memberID=3,tel=080-3333-3333,SPLEND,ExecTime=200,ResultCode=200
  • awk 'NR > 1 {print $0}' ./file1.txt
fengyehong@ubuntu:~/jmw_work_space/20240421$ awk 'NR > 1 {print $0}' ./file1.txt
110120,SPLREQUEST,東川雄一,AAA,memberID=1,tel=080-1111-1111,SPLEND,ExecTime=200,ResultCode=200
123456,SPLREQUEST,西村祐二,BBB,memberID=2,tel=080-2222-2222,SPLEND,ExecTime=300,ResultCode=200
123444,SPLREQUEST,南山裕三,CCC,memberID=3,tel=080-3333-3333,SPLEND,ExecTime=200,ResultCode=200

三. 合并两个文件为一个文件

# 待合并的两个文件14行
fengyehong@ubuntu:~/jmw_work_space/20240421$ wc -l file1.txt file2.txt7 file1.txt7 file2.txt14 total# 将file1.txt和file2.txt(去除表头)合并到newfile.csv
fengyehong@ubuntu:~/jmw_work_space/20240421$ (cat ./file1.txt;cat ./file2.txt | tail -n +2) > newfile.csv# 合并之后的文件13行(因为第2个文件去掉了表头)
fengyehong@ubuntu:~/jmw_work_space/20240421$ wc -l newfile.csv
13 newfile.csv

四. 统计指定列唯一值的数量

  • 统计指定列唯一值: awk -F',' '{print $3}' ./newfile.csv | sort -n | uniq -c
  • 去除行开头的空白部分:sed 's/^[[:space:]]*//'
# 查看csv文件的内容
fengyehong@ubuntu:~/jmw_work_space/20240421$ cat newfile.csv
ID,方式1,姓名,组,memberID,电话号码,方式2,消耗时间,结果code
110120,SPLREQUEST,東川雄一,AAA,memberID=1,tel=080-1111-1111,SPLEND,ExecTime=200,ResultCode=200
123456,SPLREQUEST,西村祐二,BBB,memberID=2,tel=080-2222-2222,SPLEND,ExecTime=300,ResultCode=200
123444,SPLREQUEST,南山裕三,CCC,memberID=3,tel=080-3333-3333,SPLEND,ExecTime=200,ResultCode=200
123434,SPLREQUEST,北岡優四,memberID=,tel=080-4444-4444,SPLEND,ExecTime=400,ResultCode=200
345345,SPLREQUEST,田中様,EEE,memberID=5,tel=080-5555-5555,SPLEND,ExecTime=500,ResultCode=200
674545,SPLREQUEST,,FFF,memberID=6,tel=080-6666-6666,SPLEND,ExecTime=400,ResultCode=200
110120,SPLREQUEST,贾飞天,AAA,memberID=1,tel=080-1111-1111,SPLEND,ExecTime=200,ResultCode=200
123456,SPLREQUEST,枫叶红,BBB,memberID=2,tel=080-2222-2222,SPLEND,ExecTime=300,ResultCode=200
123444,SPLREQUEST,枫叶红,CCC,memberID=3,tel=080-3333-3333,SPLEND,ExecTime=200,ResultCode=200
123434,SPLREQUEST,北岡優四,memberID=,tel=080-4444-4444,SPLEND,ExecTime=400,ResultCode=200
345345,SPLREQUEST,田中様,EEE,memberID=5,tel=080-5555-5555,SPLEND,ExecTime=500,ResultCode=200
674545,SPLREQUEST,,FFF,memberID=6,tel=080-6666-6666,SPLEND,ExecTime=400,ResultCode=200# 第三列是姓名列,列出每个姓名所对应的数量
fengyehong@ubuntu:~/jmw_work_space/20240421$ awk -F',' '{print $3}' ./newfile.csv | sort -n | uniq -c22 北岡優四1 南山裕三1 姓名1 東川雄一2 枫叶红2 田中様1 西村祐二1 贾飞天# 使用 uniq -c 后,数量的前面会有空格,此时可通过 sed 's/^[[:space:]]*//' 命令将其去除
fengyehong@ubuntu:~/jmw_work_space/20240421$ awk -F',' '{print $3}' ./newfile.csv | sort -n | uniq -c | sed 's/^[[:space:]]*//'
2
2 北岡優四
1 南山裕三
1 姓名
1 東川雄一
2 枫叶红
2 田中様
1 西村祐二
1 贾飞天

五. 列出文件的绝对路径

⏹不包含隐藏文件

ls *.zip | sed "s:^:`pwd`/:"

六. 获取除了空白行和注释之外的部分

  • cat file3.txt | grep -v ^# | grep -v ^$

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/637767.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

初学者如何选择ARM开发硬件?

1. 如果你有做硬件和单片机的经验,建议自己做个最小系统板:假如你从没有做过ARM的开发,建议你一开始不要贪大求全,把所有的应用都做好,因为ARM的启动方式和dsp或单片机有所不同,往往会碰到各种问题&#xf…

大数据Hive中的UDF:自定义数据处理的利器(上)

文章目录 1. 前言2. UDF与宏及静态表的对比3. 深入理解UDF4. 实现自定义UDF 1. 前言 在大数据技术栈中,Apache Hive 扮演着数据仓库的关键角色,它提供了丰富的数据操作功能,并通过类似于 SQL 的 HiveQL 语言简化了对 Hadoop 数据的处理。然而…

认知觉醒 PDF电子版 下载

认知觉醒 PDF电子版 开启自我改变的原动力 周岭 / 人民邮电出版社 / 2020-10 链接:https://pan.baidu.com/s/1EHUK_AhvE5TWAZsYXFQ5QA?pwdwrho 提取码:wrho

【PyTorch】torch.gather() 用法

gather常被用于image做mask的操作中,对哪些地方进行赋值0/1 API: torch.gather — PyTorch 2.2 documentation torch.gather(input, dim, index, outNone) → Tensor gather()的意义: 顾名思义,聚集、集合:gather…

OpenUI在windows下部署使用

OpenUI OpenUI是一个基于Python的AI对话平台,支持接入多种AI模型。 通过聊天的方式来进行UI设计,你可以通过文字来描述你想要的UI界面,OpenUI可以帮你实时进行渲染出效果 安装OpenUI 这里预设你的电脑上已安装git、Python和pip&#xff0…

分类神经网络2:ResNet模型复现

目录 ResNet网络架构 ResNet部分实现代码 ResNet网络架构 论文原址:https://arxiv.org/pdf/1512.03385.pdf 残差神经网络(ResNet)是由微软研究院的何恺明、张祥雨、任少卿、孙剑等人提出的,通过引入残差学习解决了深度网络训练中的退化问题&#xff…

Nodejs - 异步I/O

异步I/O 利用单线程,远离多线程死锁,状态同步等问题,利用异步I/O, 让单线程原理阻塞,更好的使用cpu异步I/O实现现状 阻塞IO 操作系统内对于I/O只有两种方式: 阻塞和非阻塞。在调用阻塞I/O的时候,应用程序需…

能源成果3D网络三维展厅越发主流化

在这个数字化飞速发展的时代,我们为您带来了全新的展览形式——线上3D虚拟展厅。借助VR虚拟现实制作和web3d开发技术,我们能够将物品、图片、视频和图文信息等完美融合,通过计算机技术和3D建模,为您呈现一个逼真、生动的数字化展览…

Llama 3大模型发布!快速体验推理及微调

Meta,一家全球知名的科技和社交媒体巨头,在其官方网站上正式宣布了一款开源的大型预训练语言模型——Llama-3。 据了解,Llama-3模型提供了两种不同参数规模的版本,分别是80亿参数和700亿参数。这两种版本分别针对基础的预训练任务…

JDBC学习

DriverManager(驱动管理类) Drivermanager的作用有: 1.注册驱动; 2.获取数据库连接 Class.forName("com.mysql.cj.jdbc.Driver"); 这一行的作用就是注册Mysql驱动(把我们下载的jar包加载到内存里去&…

地图图源#ESRI ArcGIS XYZ Tiles系列(TMS)

目录 1、前言 2、地图图源网址 2.1、Satellite 卫星图源 2.2、Terrain 地形图源 2.3、Street 路网/标注图源 2.4、Specifity 特色设计图源 3、专业推荐”穿搭“ 4、图源配置下载及使用 图源名称图层类别特别注意谷歌 Google①地形 ②影像 ③矢量及标注 ④特色图源国内大…

【讲解下Spring Boot单元测试】

🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共…