Linux文本处理相关命令

一、文本处理命令

Linux sort命令用于将文本文件内容加以排序。

sort 可针对文本文件的内容,以行为单位来排序。

语法格式如下:

sort [参数]...[文件]

相关参数 参数说明 -n 依照数值的大小排序 -r 以相反的顺序来排序 -k 以某列进行排序 -t 指定分割符,默认是以空格为分隔符 …

案例:

$ cat testfile      # testfile文件原有排序
test 30
Hello 95
Linux 85

使用sort命令重新排序后的结果如如下:

$ sort testfile # 重排结果
Hello 95
Linux 85
test 30

使用 -k 参数设置对第二列的值进行重排,结果如下:

$ sort testfile -k 2
test 30
Linux 85
Hello 95

Linux uniq 命令用于检查及删除文本文件中重复出现的行列,一般与 sort 命令结合使用。

uniq 可检查文本文件中重复出现的行列。

语法格式如下:

uniq [-cdu]...[输入文件][输出文件]

相关参数 参数说明 -c 在每列旁边显示该行重复出现的次数 -d 仅显示重复出现的行列 -u 仅显示出一次的行列 [输入文件] 指定已排序好的文本文件。如果不指定此项,则从标准读取数据 [输出文件] 指定输出的文件。如果不指定此选项,则将内容显示到标准输出设备(显示终端) …

案例:

testfile中的原有内容为:

$ cat testfile      #原有内容
test 30
test 30
test 30
Hello 95
Hello 95
Hello 95
Hello 95
Linux 85
Linux 85

使用uniq 命令删除重复的行后,有如下输出结果:

$ uniq testfile     #删除重复行后的内容
test 30
Hello 95
Linux 85

$ uniq -c testfile      #删除重复行后的内容
3 test 30             #前面的数字的意义为该行共出现了3次
4 Hello 95            #前面的数字的意义为该行共出现了4次
2 Linux 85            #前面的数字的意义为该行共出现了2次

当重复的行并不相邻时,uniq 命令是不起作用的,即若文件内容为以下时,uniq 命令不起作用:

$ cat testfile1      # 原有内容
test 30
Hello 95
Linux 85
test 30
Hello 95
Linux 85
test 30
Hello 95
Linux 85

这时我们就可以使用 sort:

$ sort  testfile1 | uniq
Hello 95
Linux 85
test 30

计算每行在文件中出现的次数:

[En]

Count the number of times each line appears in the file:

$ sort testfile1 | uniq -c
   3 Hello 95
   3 Linux 85
   3 test 30

在文件中找出重复的行:

$ sort testfile1 | uniq -d
Hello 95
Linux 85
test 30

Linux cut命令用于显示每行从开头算起 num1 到 num2 的文字。

语法格式如下:

cut [-c] [file]
cut [-df] [file]
...

使用说明:

cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。

如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一。

相关参数 参数说明 -c 以字符为单位进行分割 -d 自定义分隔符,默认为制表符 -f 与-d一起使用,指定显示哪个区域 …

案例:

[root@jiangzhi ~]# cat juechen  # 原文件内容
|7|9|8|7|5|5|3|4|5|1|3|4|5
|7|8|7|8|5|2|5|4|5|1
|6|5|7|6|7|6|5|3|2
|6|5|6|7|6|5|7
|3|2|4|3|4|5|2|3|4|6|2|5
|2|3|3|5|3|4|6
|2|1|5|3|4|5|3|2|4
|5|4|5|4|3
|2|5|3|4|5|2|3

如果我们想要提取每行的第二个字节,我们可以这样做:

[En]

If we want to extract the second byte of each line, we can do this:

[root@jiangzhi ~]# cat juechen | cut -b2
7
7
6
6
3
2
2
5
2

Linux tr 命令用于转换或删除文件中的字符。

tr 指令从标准输入设备读取数据,经过字符串转译后,将结果输出到标准输出设备。

语法格式如下:

tr [-cdst]...[第一字符集][第二字符集]
tr [OPTION]...SET1[SET2]

相关参数 参数说明 -c, –complement 反选设定字符。也就是符合 SET1 的部份不做处理,不符合的剩余部份才进行转换 -d, –delete 删除指令字符 -s, –squeeze-repeats 缩减连续重复的字符成指定的单个字符 -t, –truncate-set1 削减 SET1 指定范围,使之与 SET2 设定长度相等 …

案例:

testfile文件中的内容如下:

$ cat testfile         #testfile原来的内容
Linux networks are becoming more and more common,
but scurity is often an overlooked
issue. Unfortunately, in today's environment all networks
are potential hacker targets,
fro0m tp-secret military research networks to small home LANs.

Linux Network Securty focuses on securing Linux in a
networked environment, where the
security of the entire network needs to be considered
rather than just isolated machines.

It uses a mix of theory and practicl techniques to
teach administrators how to install and
use security applications, as well as how the
applcations work and why they are necesary.

将文件testfile中的小写字母全部转换成大写字母,此时,可使用如下命令:

cat testfile |tr a-z A-Z

使用 tr 命令大小写转换后,得到如下输出结果:

$ cat testfile | tr a-z A-Z #转换后的输出
LINUX NETWORKS ARE BECOMING MORE AND MORE COMMON, BUT SCURITY IS OFTEN AN OVERLOOKED
ISSUE. UNFORTUNATELY, IN TODAY'S ENVIRONMENT ALL NETWORKS ARE POTENTIAL HACKER TARGETS,
FROM TP-SECRET MILITARY RESEARCH NETWORKS TO SMALL HOME LANS.

LINUX NETWORK SECURTY FOCUSES ON SECURING LINUX IN A NETWORKED ENVIRONMENT, WHERE THE
SECURITY OF THE ENTIRE NETWORK NEEDS TO BE CONSIDERED RATHER THAN JUST ISOLATED MACHINES.

IT USES A MIX OF THEORY AND PRACTICL TECHNIQUES TO TEACH ADMINISTRATORS HOW TO INSTALL AND USE SECURITY APPLICATIONS, AS WELL AS HOW THE APPLCATIONS WORK AND WHY THEY ARE NECESARY.

Linux wc命令用于计算字数。

利用wc指令我们可以计算文件的Byte数、字数、或是行数,若不指定文件名称、或是所给予的文件名为”-“,则wc指令会从标准输入设备读取数据。

语法格式如下:

wc [-clw]...[文件...]

相关参数 参数说明 -c 统计文件的Bytes数 -l 统计文件的行数 -w 统计文件中单词的个数,默认以空白字符做为分隔符

注:在Linux系统中,一段连续的数字或字母组合为一个词

实例:

在默认的情况下,wc将计算指定文件的行数、字数,以及字节数。先查看testfile文件的内容,可以看到:

$ cat testfile
Linux networks are becoming more and more common, but scurity is often an overlooked  issue. Unfortunately, in today's environment all networks are potential hacker targets,fro0m tp-secret military research networks to small home LANs.

Linux Network Securty focuses on securing Linux in a networked environment, where the  security of the entire network needs to be considered rather than just isolated machines.

It uses a mix of theory and practicl techniques to teach administrators how to install and use security applications, as well as how the applcations work and why they are necesary.

使用wc统计,结果如下:

$ wc testfile           # testfile文件的统计信息
3 91 601 testfile       # testfile文件的行数为3、单词数91、字节数601

其中,3 个数字分别表示testfile文件的行数、单词数,以及该文件的字节数。

如果想同时统计多个文件的信息,例如同时统计testfile、testfile_1、testfile_2,可使用如下命令:

wc testfile testfile_1 testfile_2   #统计三个文件的信息

输出结果如下:

$ wc testfile testfile_1 testfile_2  #统计三个文件的信息
3 91 601 testfile                 # testfile文件的行数为3、单词数91、字节数601
9 18 78 testfile_1                   #第二个文件的行数为9、单词数18、字节数78
3 6 32 testfile_2                    #第三个文件的行数为3、单词数6、字节数32
15 115 711 总用量                    #三个文件总共的行数为15、单词数115、字节数711

Original: https://www.cnblogs.com/JZjuechen/p/15716292.html
Author: JZEason
Title: Linux文本处理相关命令

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/524268/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • .NET面试经典三问:什么是.NET?什么是.NET Framework?什么是.NET Core?

    什么是.NET?什么是.NET Framework? 本文将从上往下,循序渐进的介绍一系列相关.NET的概念,先从类型系统开始讲起,我将通过跨语言操作这个例子来逐渐引入一系列.NE…

    Linux 2023年6月13日
    089
  • ArchLinux安装-2022-01-12

    这篇教程,是我基于B站up住theCW的视频教程整理的,其中添加了一些我在安装n次之后的经验(虽然失败过几次,但我现在安装不会再出差错,所以请放心的看此教程) 当然,我认为theC…

    Linux 2023年5月27日
    094
  • 关系型、非关系型数据库存储选型盘点大全

    工作中总是遇到数据存储相关的 Bug 工单,新需求开发设计中也多多少少会有数据模型设计和存储相关的问题。经过几次存储方案设计选型和讨论后发现需要有更全面的思考框架。 日常开发中常用…

    Linux 2023年6月8日
    0114
  • 如何实现异步 connect

    写过网络程序的同学,应该都知道 connect 函数,在 socket 开始读写操作之前,先要进行连接,也即 TCP 的三次握手 , 这个过程就是在 connect 函数中完成的,…

    Linux 2023年6月13日
    0116
  • Git的常见命令

    Git 一、git环境安装 1.初始化本地仓库: git init 2.将本地仓库跟远程仓库建立连接:git remote add name path ​ git clone pa…

    Linux 2023年6月7日
    084
  • MySQL slow log 慢日志

    sql慢日志用于记录执行时间超过指定阈值的SQL,对于系统性能和故障排错非常有帮助 1.如何开启sql慢日志 –开启slow log …

    Linux 2023年6月6日
    079
  • 面试题:海量数据处理利器-布隆过滤器

    概念 原理 布隆过滤器的使用场景 简单模拟布隆过滤器 Guava布隆过滤器 Redis布隆过滤器 布谷鸟过滤器 作者:小牛呼噜噜 | https://xiaoniuhululu.c…

    Linux 2023年6月6日
    0177
  • Linux下腾达无线网卡U6的驱动安装

    U6无线网卡是rt8192eu芯片, 腾达驱动只支持到内核4.4左右; 5.0以上的内核就需要自己编译的。 终于找到了一个github修改版的驱动,经过验证运行正常。 https:…

    Linux 2023年6月14日
    090
  • AWS修改RDS时区

    查看 RDS 当前时区 默认情况下,AWS 的 RDS 采用的是 UTC 时间。而我们地区一般位于东八区,因此我们本地的时间是 UTC+8。 连接到 RDS 上,查询当前实例的时区…

    Linux 2023年6月7日
    0103
  • Python闭包

    前言 学习Python的单例实现的时候,遇到了下面这样的代码。很不理解为什么局部变量 _instance没有重新初始化。后来看到有人说这是闭包,于是又去了解了下 闭包。没想到闭包竟…

    Linux 2023年6月7日
    098
  • etcd 与 redis使用场景

    etcd etcd主要讲究服务发现, 有监听机制, 并能保持数据的一直性, 高可用 etcd的红火来源于kurbernetes用etcd做服务发现 etcd是一种分布式存储,更强调…

    Linux 2023年5月28日
    0104
  • 解决pip下载慢

    临时使用 可以在使用pip的时候加参数 -i https://pypi.tuna.tsinghua.edu.cn/simple 设为默认 pip install pip -U -i…

    Linux 2023年6月13日
    098
  • C++ 之多态总结

    前言 最近为了完成数据库系统的实验,又复习起了《C++ Primer》,上一次看这本巨著也是大二下的六月份,那时看面向对象程序编程这一章还云里雾里的,没有领会多态的奥妙,学完 Ja…

    Linux 2023年6月7日
    092
  • 保姆教程系列三、Nacos Config–服务配置

    前言: 请各大网友尊重本人原创知识分享,谨记本人博客:南国以南i 上篇我们介绍到 保姆教程系列二、Nacos实现注册中心 配置中心原理 一、 服务配置中心介绍 首先我们来看一下,微…

    Linux 2023年6月14日
    0100
  • Redis in Action 文章投票

    首先在 Linux 开启 Redis 服务: 如果显示: 说明 Redis 服务已经开启,端口号 6379 redis.php init_data.php 用于添加案例的数据 vo…

    Linux 2023年5月28日
    0116
  • .net core3.1 abp动态菜单和动态权限(思路) (二)

    ps:本文需要先把abp的源码下载一份来下,跟着一起找实现,更容易懂 在abp中,对于权限和菜单使用静态来管理,菜单的加载是在登陆页面的地方(具体是怎么知道的,浏览器按F12,然后…

    Linux 2023年6月7日
    0140
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球