首页 > 系统相关 >Shell编程:文本处理器(grep、sort、uniq、tr 命令)

Shell编程:文本处理器(grep、sort、uniq、tr 命令)

时间:2024-09-05 11:20:42浏览次数:6  
标签:sort Shell grep 字符集 tr uniq txt


文章目录


文本处理器 1

本章讲解 grepsortuniqtrcutsplitpaste 命令等。这些文本处理器通常用于数据过滤、转换、清理、格式化和提取等操作,是 Shell 脚本编程和数据处理任务中的核心工具。在 Unix/Linux 系统中,文本处理器可以独立使用,也可以通过管道 | 进行组合,构成强大的文本处理流水线。

grep 命令-搜索文本

grep 命令用于在文件中搜索符合条件的文本,并将符合条件的行打印出来。

语法格式

grep [选项]… 查找条件 目标文件

常用选项

  • -m [次数]:匹配 # 次后停止。(有空格)
  • -v:显示不被 pattern 匹配到的行,即取反。
  • -i:忽略字符大小写。(可有可无)
  • -n:显示匹配的行号。
  • -c:统计匹配的行数。
  • -o:仅显示匹配到的字符串。
  • -q:静默模式,不输出任何信息。
  • -A[#]:(After)显示匹配行之后的 # 行。(无空格)
  • -B[#]:(Before)显示匹配行之前的 # 行。(无空格)
  • -C[#]:(Context)显示匹配行的前后 # 行。(无空格)
  • -e:实现多个选项间的逻辑或(or)关系。
  • -w:匹配整个单词。
  • -E:使用ERE扩展正则表达式,相当于 egrep
  • -F:不支持正则表达式,进行精确匹配。
  • -f [文件]:从文件读取匹配模式。(有空格)
  • -r:递归目录,但不处理软链接。
  • -R:递归目录,且处理软链接。

示例

# 只显示第一个匹配到的行
grep -m 1 root /etc/passwd   

# 显示非空且非注释的行
grep -Ev '^[[:space:]]*#|^$' /etc/fstab  

# 统计匹配到的行数
grep -c root /etc/passwd  

# 匹配到的行及其后3行
grep -A3 root /etc/passwd   

# 显示包含 root 或 bash 的行
grep -e root -e bash /etc/passwd  

# 只匹配 root 这个单词
grep -w root /etc/passwd  

# 匹配两个文件中内容相同的部分
grep -f 123.txt 456.txt

# 递归搜索目录中包含字符串 'a' 的文件,不处理软链接
grep -r a /opt

# 递归搜索目录中包含字符串 'a' 的文件,处理软链接
grep -R a /opt

# 将非空行写入到 test.txt 文件
cat 123.txt | grep -v '^$' > test.txt

# 过滤以 "b" 开头的行
grep "^b" 123.txt

# 过滤以 "/" 结尾的行
grep '/$' 123.txt

sort 命令-行排序

sort 命令用于对文件内容(以行为单位)进行排序,可以根据不同的数据类型进行排序。

语法格式

sort [选项] 参数

常用选项

  • -f:忽略大小写,默认会大写字母排在前面。
  • -b:忽略每行前面的空格。
  • -n:按照数字进行排序。
  • -r:反向排序。
  • -u:去重,等同uniq,表示相同的数据仅显示一行。
  • -t:指定字段分隔符,默认使用 tab 键分隔。
  • -k:指定排序字段。(空格可有可无)
  • -o <输出文件>:将排序后的结果转存至指定文件。(有空格)

示例

sort -n test.txt     # 按数字大小排序
sort -n -r test.txt  # 倒序排列
sort -u test.txt     # 去重
cat /etc/passwd | sort -o aaa.txt  # 把整个 /etc/passwd 文件排序后保存到 aaa.txt
cat -n /etc/passwd | sort -n -o ky27.txt  #按照源文件的顺序传

uniq 命令-快捷去重

uniq 命令用于报告或忽略文件中连续的重复行,常与 sort 命令结合使用。

语法格式

uniq [选项] 参数

常用选项

  • -c: 统计连续重复的行的次数,并且合并重复的行。
  • -u: 显示仅出现一次的行(包括不连续的重复行)。
  • -d: 仅显示重复出现的行(必须是连续的重复行)。

示例

uniq -u test.txt  # 只显示出现一次的行
uniq -d test.txt  # 只显示连续重复的行
sort -n test.txt | uniq -c  # 对重复的数据行计数,并去重输出
sort -n test.txt | uniq -u  # 只展示不重复的数据行
sort -n test.txt | uniq -d  # 只展示重复的数据行

tr 命令-字符替换删除

tr 命令用于对来自标准输入的字符进行替换、压缩和删除。

语法格式

tr [选项] 参数

常用选项

  • -c:保留字符集1的字符,其他字符(包括换行符\n)用字符集2替换。
  • -d:删除所有属于字符集1的字符。
  • -s:将重复出现的字符串压缩为一个字符串,用字符集2 替换 字符集1。
  • -t:字符集2 替换 字符集1,不加也行。

参数

  • **字符集1:**指定要转换或删除的原字符集。
    • 转换操作:执行转换操作时,必须指定参数 “字符集2” 作为目标字符集。
    • 删除操作:执行删除操作时,不需要指定 “字符集2”。
  • **字符集2:**指定要转换成的目标字符集。

示例

echo 192.168.233.22 | tr '.' ' '  # 把 "." 替换成空格
echo ABC | tr "A-Z" "a-z"         # 大写替换成小写
echo abc | tr -c 'ab' 'a'         # 保留 ab,替换 c,输出abaa
        # 因为 tr 将输入中任何未匹配的字符都连续替换,导致重复的 a
echo abc | tr -d 'ab'             # 删除 ab,输出 c
sort -n test.txt | tr -s '\n'     # 排序输出,压缩空行为一个
echo $PATH | tr -s ":" "\n"      # 把 ":" 替换为换行

标签:sort,Shell,grep,字符集,tr,uniq,txt
From: https://blog.csdn.net/qq_44421043/article/details/141867212

相关文章

  • WebShell流量特征检测_哥斯拉篇
    80后用菜刀,90后用蚁剑,95后用冰蝎和哥斯拉,以phpshell连接为例,本文主要是对这四款经典的webshell管理工具进行流量分析和检测。什么是一句话木马?1、定义顾名思义就是执行恶意指令的木马,通过技术手段上传到指定服务器并可以正常访问,将我们需要服务器执行的命令上传并执行2、特点......
  • 记一次代码审计之nbcio-boot从信息泄露到Getshell
    《Java代码审计》http://mp.weixin.qq.com/s?__biz=MzkwNjY1Mzc0Nw==&mid=2247484219&idx=1&sn=73564e316a4c9794019f15dd6b3ba9f6&chksm=c0e47a67f793f371e9f6a4fbc06e7929cb1480b7320fae34c32563307df3a28aca49d1a4addd&scene=21#wechat_redirect一、项目简介NBCI......
  • shell脚本语言基础(基础理论)
    目录一.初识shell脚本1.1shell的定义1.2shell的分类1.3shell脚本的使用场景 2.shell脚本的详细配置 2.1shell的特性2.2脚本的调用形式2.3读取顺序2.4shell脚本中的快捷键2.5关于通配符2.6shell脚本的编写规范2.7变量的类型一.初识shell脚本1.1shell的定义......
  • 【Linux入门】正则表达以及sort、uniq、tr、cut命令
    文章目录正则表达1.正则表达式(RegularExpressions)常用的正则表达式元字符:1.基本元字符2.字符类元字符3.特殊字符类4.边界匹配符5.控制字符和转义字符6.贪婪与非贪婪模式示例补充sort命令基本用法常用选项示例uniq命令基本用法常用选项示例tr命令基本用法常用......
  • Wx64ST:一款轻松可修改的C语言Shellcode模板
    关于windows_x64_shellcode_templatewindows_x64_shellcode_template简称为Wx64ST,它是一款功能强大的Shellcode模板,该模板基于C语言编写,其简单、可扩展和易于修改等特性可以帮助广大安全研究人员轻松开发适用于Windowsx64的Shellcode。值得一提的是,该模板代码可以加载Load......
  • 简单可靠的SpringBoot Jar包启动和更新的Shell脚本
    能用脚本执行,就不用手动nohupjava-jar啦。1.参数说明最终代码实现如下,支持四个参数:●operation:start-启动新包/update-更新包●env_para:指定使用哪个配置文件,如test/prod/dev等●new_jar_package_name:新包的名称,这里必须要求脚本的位置在新,旧包的同一目......
  • WebShell流量特征检测_冰蝎篇
    80后用菜刀,90后用蚁剑,95后用冰蝎和哥斯拉,以phpshell连接为例,本文主要是对这四款经典的webshell管理工具进行流量分析和检测。什么是一句话木马?1、定义顾名思义就是执行恶意指令的木马,通过技术手段上传到指定服务器并可以正常访问,将我们需要服务器执行的命令上传并执行2、特点......
  • WebShell流量特征检测_蚁剑篇
    80后用菜刀,90后用蚁剑,95后用冰蝎和哥斯拉,以phpshell连接为例,本文主要是对这四款经典的webshell管理工具进行流量分析和检测。什么是一句话木马?1、定义顾名思义就是执行恶意指令的木马,通过技术手段上传到指定服务器并可以正常访问,将我们需要服务器执行的命令上传并执行2、特点......
  • ssh密钥批量分发 ssh-copy-id shell脚本
    所有linux主机之间(包含本主机)root用户实现密钥ssh认证,禁用密码认证。1.shrm-rf~/.ssh/{known_hosts,id_rsa*}ssh-keygen-trsa-N''-f~/.ssh/id_rsayum-yinstallexpecttclforiin{1..3}do expect<<[email protected].$iexpect"ye......
  • WebShell流量特征检测_中国菜刀篇
    80后用菜刀,90后用蚁剑,95后用冰蝎和哥斯拉,以phpshell连接为例,本文主要是对这四款经典的webshell管理工具进行流量分析和检测。什么是一句话木马?1、定义顾名思义就是执行恶意指令的木马,通过技术手段上传到指定服务器并可以正常访问,将我们需要服务器执行的命令上传并执行2、特点......