当前位置: 首页 > news >正文

shell中命令小工具:cut、sort、uniq,tr的使用方式

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
    • 一、cut —— 按列或字符截取
      • 1. 常用选项
      • 2. 示例
    • 二、sort —— 排序(默认按行首字符升序)
      • 1. 常用选项
      • 常用 `sort` 命令选项
    • 三、uniq —— 去除 **连续** 重复行
      • 1. 常用选项
      • 2. 示例
      • 实战:查看登录用户
    • 四、tr —— 字符替换 / 删除 / 压缩重复
      • 1. 常用选项
      • 2. 示例
        • 示例:
    • 五、常见组合面试题(扩展)
      • 1. 统计当前连接的主机数
        • 1.1 命令解析
      • 2. 统计当前主机的连接状态
      • 3. 查看当前登录用户
      • 4. 查看登录过系统的用户
    • 六、总结口诀


前言

提示:这里可以添加本文要记录的大概内容:

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


一、cut —— 按列或字符截取

常用于从文本中抽取需要的字段。

1. 常用选项

  • -b:按字节截取
  • -c:按字符截取(中文推荐用 -c
  • -d:指定分隔符(默认 TAB)
  • -f:指定字段(需配合 -d

2. 示例

cut -d':' -f1 /etc/passwd        # 截取第1列(用户名)

在这里插入图片描述

cut -d':' -f3 /etc/passwd        # 截取第3列(UID)

在这里插入图片描述

cut -d':' -f1,3 /etc/passwd      # 截取第1和3列

在这里插入图片描述

cut -c 2 name.txt                # 截取第2个字符

在这里插入图片描述

who

在这里插入图片描述

who | cut -b 3   #按字节截取第三个字符

在这里插入图片描述

who | cut -c 3 #按字符截取

在这里插入图片描述

cat name | cut -b 2
cat name | cut -c 2   #中文字符截取

在这里插入图片描述

注意:cut只擅长于处理单个字符为间隔的文本


二、sort —— 排序(默认按行首字符升序)

1. 常用选项

常用 sort 命令选项

选项功能描述
-t指定字段分隔符(默认为空格或制表符)
-k指定排序的关键字段(可指定起止列)
-n按数值大小排序(默认按字典序)
-r降序排列(默认升序)
-u去除重复行(类似 uniq 的功能)
-o将结果输出到指定文件(而非标准输出)

三、uniq —— 去除 连续 重复行

注意:只能去掉相邻的重复行,所以通常先 sortuniq

语法:uniq [选项] 参数

1. 常用选项

  • -c:对重复的行进行计数
  • -d:只显示重复行
  • -u:只显示唯一行

2. 示例

# 创建一个水果类型的文件,一共9行内容实例
cat fruit.txt 
apple
apple
peache
pear
banana
cherry
cherry
banana
orangeuniq  fruit.txt                      # 去掉相邻重复行
sort fruit.txt | uniq                # 全局去重
sort fruit.txt | uniq -c             # 统计每行出现次数
sort fruit.txt | uniq -d             # 只显示重复行
sort fruit.txt | uniq -u             # 只显示不重复行
# 或者这样写
cat fruit.txt | sort | uniq -u# 实战:查看登录用户
# 示例一
who | awk '{print $1}'| uniq
# 示例二:查看登陆过系统的用户
last | awk '{print $1}' | sort | uniq | grep -v "^$" | grep -v wtmp
uniq  fruit.txt                      # 去掉相邻重复行

在这里插入图片描述

sort fruit.txt | uniq                # 全局去重

在这里插入图片描述

sort fruit.txt | uniq -c             # 统计每行出现次数

在这里插入图片描述

sort fruit.txt | uniq -d             # 只显示重复行

在这里插入图片描述

sort fruit.txt | uniq -u             # 只显示不重复行

在这里插入图片描述

实战:查看登录用户

#### 示例一
who | awk '{print $1}'| uniq

在这里插入图片描述

#### 示例二:查看登陆过系统的用户

last | awk '{print KaTeX parse error: Expected 'EOF', got '}' at position 2: 1}̲' | sort | uniq…" | grep -v wtmp
在这里插入图片描述


四、tr —— 字符替换 / 删除 / 压缩重复

主要用于 单个字符处理,不适合字段级别。

语法:tr [选项]… SET1 [SET2]

从标准输入中替换、缩减和/或删除字符,并将结果写到标准输出。

1. 常用选项

  • -d:删除字符
  • -s:压缩重复字符,只保留一个

2. 示例

tr 'a-z' 'A-Z' < fruit.txt           # 小写转大写
# 或
cat fruit.txt | tr 'a-z' 'A-Z'
cat fruit | tr 'apple' 'APPLE'       # 替换是一一对应的字母的替换
cat fruit | tr 'a' ' '               # 把替换的字符用单引号引起来,包括特殊字
cat fruit | tr 'apple' 'star'        # a替换成s,p替换成a,le替换成r
tr 'a' '/' < fruit.txt               # 替换 a -> /   多个字符替换成一个tr -d 'a' < fruit.txt                # 删除所有 a
tr -d '\n' < fruit.txt               # 删除换行符
tr -s 'p' < fruit.txt                # 连续 p 压缩成一个
示例:

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述


五、常见组合面试题(扩展)

1. 统计当前连接的主机数

ss -nt | tr -s " " | cut -d " " -f5 | cut -d ":" -f1 | sort | uniq -c

在这里插入图片描述

1.1 命令解析
  • ss -nt:查看 TCP 连接,不解析服务名
  • tr -s " ":压缩多个空格为一个
  • cut -d " " -f5:取第5列(对端地址:端口)
  • cut -d ":" -f1:取 IP 地址部分
  • sort:排序
  • uniq -c:统计重复数量

2. 统计当前主机的连接状态

ss -nta | grep -v '^State' | cut -d" " -f1 | sort | uniq -c

在这里插入图片描述

3. 查看当前登录用户

who | awk '{print $1}' | uniq

在这里插入图片描述

4. 查看登录过系统的用户

last | awk '{print $1}' | sort | uniq | grep -v "^$" | grep -v wtmp

在这里插入图片描述


六、总结口诀

  • cut —— 截列
  • sort —— 排序
  • uniq —— 去重(必须连续,常和 sort 联合)
  • tr —— 替换 / 删除 / 压缩


文章转载自:

http://sOmKyDkZ.kyjpg.cn
http://uXNQDDlY.kyjpg.cn
http://6R9ozyHY.kyjpg.cn
http://kQ5a19Gp.kyjpg.cn
http://NJI1mLe5.kyjpg.cn
http://zQYd2Nh6.kyjpg.cn
http://pj5EpniZ.kyjpg.cn
http://CWoVMMq9.kyjpg.cn
http://DQCVhGTL.kyjpg.cn
http://i2jH9aAd.kyjpg.cn
http://hi8PWZm6.kyjpg.cn
http://w3tQTVln.kyjpg.cn
http://twUegKbJ.kyjpg.cn
http://8TrEfAkM.kyjpg.cn
http://NKcsdckl.kyjpg.cn
http://lYmVIK7t.kyjpg.cn
http://V3UmVOlg.kyjpg.cn
http://egLhY5CC.kyjpg.cn
http://WwUWtNHX.kyjpg.cn
http://Loqocpza.kyjpg.cn
http://pyiMjkJR.kyjpg.cn
http://9NJQsvVq.kyjpg.cn
http://eTXuchsk.kyjpg.cn
http://yMmeGUk4.kyjpg.cn
http://JMy9mstc.kyjpg.cn
http://wonn3KaJ.kyjpg.cn
http://7UettIOF.kyjpg.cn
http://H13aDyA8.kyjpg.cn
http://C7VLMBpo.kyjpg.cn
http://FgdYJFuJ.kyjpg.cn
http://www.dtcms.com/a/364233.html

相关文章:

  • 电子电气架构 --- 新EEA架构下开发模式转变
  • Redis基础概述
  • 分词器详解(一)
  • 第二十章 ESP32S3 IIC_EEPROM 实验
  • STM32 - Embedded IDE - GCC - 使用 GCC 链接脚本限制 Flash 区域
  • 【Android】从复用到重绘的控件定制化方式
  • React实现音频文件上传与试听
  • 计算机毕业设计选题推荐:基于Python+Django的新能源汽车数据分析系统
  • SpringBoot 整合 Kafka 的实战指南
  • Spring AI调用sglang模型返回HTTP 400分析处理
  • Unity开发保姆级教程:C#脚本+物理系统+UI交互,3大模块带你通关游戏开发
  • Oracle 10g 安装教程(详解,从exe安装到数据库配置,附安装包)​
  • 终于赶在考试券过期前把Oracle OCP证书考下来了!
  • 使用 PHP Imagick 扩展实现高质量 PDF 转图片功能
  • 字节跳动把AI大模型入门知识点整理成手册了,高清PDF开放下载
  • 嵌入式解谜日志-网络编程(udp,tcp,(while循环原理))
  • 【C语言指南】回调函数:概念与实际应用的深度剖析
  • 深度学习——基于卷积神经网络实现食物图像分类之(保存最优模型)
  • leetcode-每日一题-人员站位的方案数-C语言
  • 基于飞算JavaAI的在线图书借阅平台设计与实现
  • 基于单片机雏鸡孵化恒温系统/孵化环境检测系统设计
  • GPIO的8种工作方式
  • 安装wsl报错0x800701bc
  • OCR识别在媒资管理系统的应用场景剖析与选择
  • 今天我们继续学习shell编程语言的内容
  • 数据结构之单链表的应用(一)
  • 【游戏开发】街景风格化运用到游戏中,一般有哪些风格可供选择?
  • ThreadLocal深度解析:线程本地存储的奥秘
  • 【模型学习】LoRA的原理,及deepseek-vl2下LoRA实现
  • 【渗透测试】使用 UV 简化 Python 工具和脚本管理