shell编程前奏,Linux文本处理工具汇总grep、cut、sort、tee、diff、paste、tr(一)

本文涉及的产品
转发路由器TR,750小时连接 100GB跨地域
简介: shell编程前奏,Linux文本处理工具汇总grep、cut、sort、tee、diff、paste、tr(一)

目录



一、grep 行过滤


二、cut 列截取


三、sort 排序


四、uniq 去重


五、tee 读取标准输入


六、diff 比较文件差异


七、paste 合并


八、tr 字符转换


8.1 替换


8.2 删除


8.3 压缩


九、总结


本篇汇总了Linux中的文本处理工具,也是shell脚本编程中经常要用到的工具,有些工具例如grep绝对是要重点掌握的,而有些工具例如paste个人觉得很鸡肋


一、grep 行过滤



grep是行过滤工具,根据关键字进行行过滤,这个命令可以结合正则表达式使用


常见选项:


OPTIONS:
    -i: 不区分大小写
    -v: 查找不包含指定内容的行,反向选择
    -w: 按单词搜索
    -o: 打印匹配关键字
    -c: 统计匹配到的行数
    -n: 显示行号
    -r: 逐层遍历目录查找
    -A: 显示匹配行及后面多少行 
    -B: 显示匹配行及前面多少行
    -C: 显示匹配行前后多少行
    -l:只列出匹配的文件名
    -L:列出不匹配的文件名
    -e: 使用正则匹配
    -E:使用扩展正则匹配
    ^key:以关键字开头
    key$:以关键字结尾
    ^$:匹配空行
    --color=auto :可以将找到的关键词部分加上颜色的显示

image.png

image.png

image.png

image.png

image.png

image.png


二、cut 列截取



cut命令有两个主要的功能,第一是显示文件内容,第二是连接多个文件


若不指定file参数,该命令将读取标准输入。 必须指定 -b、-c 或 -f 标志之一


常用参数:


-b 以字节为单位进行分割 ,仅显示行中指定直接范围的内容
-c 以字符为单位进行分割 , 仅显示行中指定范围的字符
-d 自定义分隔符,默认为制表符”TAB”
-f 显示指定字段的内容 , 与-d一起使用
-n 取消分割多字节字符


#截取用户名passwd文件中的用户名
[root@localhost data]# cut -d: -f1 passwd 
root
bin
daemon
adm
lp
sync
#仅显示部分
#显示passwd前十个字符
[root@localhost data]# cut -c1-10 passwd 
root:x:0:0
bin:x:1:1:
daemon:x:2
adm:x:3:4:
lp:x:4:7:l
sync:x:5:0
shutdown:x
halt:x:7:0
mail:x:8:1
operator:x
#仅显示部分
#截取passwd文件第十个到最后的字符
[root@localhost data]# cut -c10- passwd 
0:root:/root:/bin/bash
:bin:/bin:/sbin/nologin
2:2:daemon:/sbin:/sbin/nologin
:adm:/var/adm:/sbin/nologin
lp:/var/spool/lpd:/sbin/nologin
0:sync:/sbin:/bin/sync
x:6:0:shutdown:/sbin:/sbin/shutdown
0:halt:/sbin:/sbin/halt
#仅显示部分

image.png

image.png


 #列出当前系统的运行级别
***********************
如何查看系统运行级别
命令:runlevel
文件:/etc/inittab
***********************
[root@localhost data]# runlevel 
N 5
[root@localhost data]# runlevel |cut -c3
5
[root@localhost data]# runlevel |cut -d ' ' -f2
5


三、sort 排序



sort命令是在Linux里非常有用,它将文件进行排序,并将排序结果标准输出


sort命令既可以从特定的文件,也可以从stdin中获取输入


sort命令将文件的每一行作为一个单位,从首字符向后,依次按ASCll码值进行比较,最后升序输出


常用参数:


-u :去除重复行
-r :降序排列,默认是升序
-o : 将排序结果输出到文件中,类似重定向符号>
-n :以数字排序,默认是按字符排序
-t :分隔符
-k :第N列
-b :忽略前导空格。
-R :随机排序,每次运行的结果均不同
#将passwd文件的前十行导出,安装第三列数字的升序排序
[root@localhost data]# head passwd > 1.txt
[root@localhost data]# cat -n 1.txt 
     1  root:x:0:0:root:/root:/bin/bash
     2  bin:x:1:1:bin:/bin:/sbin/nologin
     3  daemon:x:2:2:daemon:/sbin:/sbin/nologin
     4  adm:x:3:4:adm:/var/adm:/sbin/nologin
     5  lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
     6  sync:x:5:0:sync:/sbin:/bin/sync
     7  shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
     8  halt:x:7:0:halt:/sbin:/sbin/halt
     9  mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    10  operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost data]# sort -n -t: -k3 1.txt
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost data]# 

image.png

image.png



四、uniq 去重



该命令的作用是用来去除文本文件中连续的重复行,中间不能夹杂其他文本行。去除了重复的,保留的都是唯一的


sort只要有重复行,它就去除,而uniq重复行必须要连续,也可以用它忽略文件中的重复行


常用参数:


-i 忽略大小写
-c 打印每行在文本中重复出现的次数
-d 只显示有重复的纪录,每个重复纪录只出现一次
-u 只显示没有重复的纪录


[root@localhost data]# cat 3.txt 
 test 30  
 test 30  
 test 30  
 Hello 95  
 Hello 95  
 Hello 95  
 Hello 95  
 Linux 85
 Linux 85
#查看时删除文件中连续重复的行
[root@localhost data]# uniq 3.txt 
 test 30  
 Hello 95  
 Linux 85
#打印重复的次数
[root@localhost data]# uniq -c 3.txt 
      3  test 30  
      4  Hello 95  
      2  Linux 85
#只显示没有重复的记录
[root@localhost data]# uniq -u 3.txt 
[root@localhost data]# 
目录
相关文章
|
2月前
|
Shell Linux
Linux shell编程学习笔记30:打造彩色的选项菜单
Linux shell编程学习笔记30:打造彩色的选项菜单
|
11天前
|
运维 监控 Shell
深入理解Linux系统下的Shell脚本编程
【10月更文挑战第24天】本文将深入浅出地介绍Linux系统中Shell脚本的基础知识和实用技巧,帮助读者从零开始学习编写Shell脚本。通过本文的学习,你将能够掌握Shell脚本的基本语法、变量使用、流程控制以及函数定义等核心概念,并学会如何将这些知识应用于实际问题解决中。文章还将展示几个实用的Shell脚本例子,以加深对知识点的理解和应用。无论你是运维人员还是软件开发者,这篇文章都将为你提供强大的Linux自动化工具。
|
2月前
|
Shell Linux
Linux shell编程学习笔记82:w命令——一览无余
Linux shell编程学习笔记82:w命令——一览无余
|
2月前
|
Linux Shell
Linux系统编程:掌握popen函数的使用
记得在使用完 `popen`打开的流后,总是使用 `pclose`来正确关闭它,并回收资源。这种做法符合良好的编程习惯,有助于保持程序的健壮性和稳定性。
83 6
|
2月前
|
Linux Shell
Linux系统编程:掌握popen函数的使用
记得在使用完 `popen`打开的流后,总是使用 `pclose`来正确关闭它,并回收资源。这种做法符合良好的编程习惯,有助于保持程序的健壮性和稳定性。
122 3
|
2月前
|
Shell Linux Python
python执行linux系统命令的几种方法(python3经典编程案例)
文章介绍了多种使用Python执行Linux系统命令的方法,包括使用os模块的不同函数以及subprocess模块来调用shell命令并处理其输出。
28 0
|
3月前
|
项目管理 敏捷开发 开发框架
敏捷与瀑布的对决:解析Xamarin项目管理中如何运用敏捷方法提升开发效率并应对市场变化
【8月更文挑战第31天】在数字化时代,项目管理对软件开发至关重要,尤其是在跨平台框架 Xamarin 中。本文《Xamarin 项目管理:敏捷方法的应用》通过对比传统瀑布方法与敏捷方法,揭示敏捷在 Xamarin 项目中的优势。瀑布方法按线性顺序推进,适用于需求固定的小型项目;而敏捷方法如 Scrum 则强调迭代和增量开发,更适合需求多变、竞争激烈的环境。通过详细分析两种方法在 Xamarin 项目中的实际应用,本文展示了敏捷方法如何提高灵活性、适应性和开发效率,使其成为 Xamarin 项目成功的利器。
49 1
|
5月前
|
消息中间件 存储 缓存
【嵌入式软件工程师面经】Linux系统编程(线程进程)
【嵌入式软件工程师面经】Linux系统编程(线程进程)
124 1
|
6月前
|
Linux 调度 数据库
Linux下的系统编程——线程同步(十三)
Linux下的系统编程——线程同步(十三)
111 0
Linux下的系统编程——线程同步(十三)
|
存储 Linux 调度
Linux系统编程 多线程基础
Linux系统编程 多线程基础
61 1