相似命令对比
awk
命令用法表格
场景 | 命令示例 | 说明 | 示例输入文件内容 (input.txt ) | 输出结果 |
---|---|---|---|---|
1. 基础字段提取 | awk -F: '{print $1}' /etc/passwd | 按分隔符提取第1列(如用户名)。 | root:x:0:0:root:/root:/bin/bash | root |
2. 多字段组合输出 | awk -F: '{print $1, $3, $7}' /etc/passwd | 提取第1、3、7列并用空格分隔。 | 同上 | root 0 /bin/bash |
3. 条件过滤行 | awk -F: '$3 >= 1000 {print $1}' /etc/passwd | 输出UID(第3列)≥1000的用户名。 | user1:x:1000:1000:User One:/home/user1:/bin/bash | user1 |
4. 数值计算 | awk '{sum += $1} END {print sum}' numbers.txt | 计算第1列数值的总和。 | 10<br>20<br>30 | 60 |
5. 条件统计 | awk -F: '$7 == "/bin/bash" {count++} END {print count}' /etc/passwd | 统计使用 /bin/bash 的用户数。 | 同场景1 | 2 (假设有2个用户使用bash) |
6. 数组去重统计 | awk '{a[$0]++} END {for (i in a) print i, a[i]}' duplicates.txt | 统计每行出现次数并去重。 | apple<br>banana<br>apple | apple 2<br>banana 1 |
7. 自定义分隔符 | awk -F, '{print $2}' data.csv | 按逗号分隔CSV文件并提取第2列。 | John,Doe,25<br>Jane,Smith,30 | Doe<br>Smith |
8. 格式化输出 | awk -F: 'BEGIN {OFS=":"} {print $1, "NEW", $3}' /etc/passwd | 修改输出分隔符为冒号,并在第2列插入NEW 。 | 同场景1 | root:NEW:0 |
9. 匹配正则表达式 | awk '/error/ {print}' logfile.txt | 输出包含error 的行。 | [INFO] Started<br>[ERROR] Failed | [ERROR] Failed |
10. 多条件组合 | awk -F: '$3 > 500 && $7 == "/bin/bash" {print $1}' /etc/passwd | 输出UID>500且使用bash的用户名。 |
操作符 | 作用 | 示例 |
---|---|---|
< | 输入重定向(文件 → 命令) | cat < mail.txt |
<< | Here Document(多行输入) | read a b << EOF 1 2 EOF |
<<< | Here String(单行输入) | grep "word" <<< "text" |
`> | ` | 强制覆盖输出(即使存在 noclobber |
场景 | 操作符 | 示例 | 是否需要空格 |
---|---|---|---|
[ ] 字符串比较 | = | [ "$var" = "value" ] | 是 |
[[ ]] 字符串比较 | == | [[ "$var" == "value" ]] | 建议加 |
变量赋值 | = | var="value" | 否 |
awk处理文本时,读文件前、读取文件内容中、读文件后后这三个环节是如何表示的?
- BEGIN{ } 文件前处理:awk没有读入行之前 要执行的动作; 一般对数据作初始化操作,可以单独使用。
- { } 行处理:对awk读入的每一行进行处理,可以单独使用。
- END{ }文件后处理:awk 把所有的行都处理完后要执行的动作,一般输出数据处理的结果。可以单独使用。
sort
命令用法表格
选项 | 说明 | 示例 | 输出说明 |
---|---|---|---|
无选项 | 按字典序(ASCII 顺序)对行排序 | sort file.txt | 按行首字母顺序排列 |
-n | 按数值大小排序(而非字典序) | sort -n numbers.txt | 数值从小到大排序 |
-r | 逆序排序(降序) | sort -r file.txt | 字典序或数值的逆序 |
-k | 指定排序的列(字段) | sort -k2 file.csv | 按第 2 列排序(需配合 -t 指定分隔符) |
-t | 指定字段分隔符(默认空白字符) | sort -t: -k3 /etc/passwd | 按 /etc/passwd 的第 3 列(UID)排序 |
-u | 去除重复行(保留唯一行) | sort -u duplicates.txt | 输出无重复的行 |
-o | 将排序结果输出到文件(而非标准输出) | sort file.txt -o sorted_file.txt | 将排序结果保存到 sorted_file.txt |
-V | 按版本号排序(支持 1.10 排在 1.2 之后) | sort -V versions.txt | 适用于软件版本号排序 |
-f | 忽略大小写差异 | sort -f mixedcase.txt | 将 Apple 和 apple 视为相同 |
-M | 按月份名称排序(如 Jan 、Feb ) | sort -M months.txt | 按月份顺序排列 |
[[ ]]
和 [ ]
是 shell 脚本中用于条件测试的两种语法结构,但它们在功能、安全性和灵活性上有显著区别。以下是两者的核心对比和详细说明:
1. 语法与功能差异
特性 | [[ ]] | [ ] (传统 test 命令) |
---|---|---|
支持的运算符 | 支持逻辑运算符 && 、` | |
单词拆分与引号处理 | 变量中的空格不会被拆分,无需额外引号(如 [[ $var == *txt ]] 安全)。 | 未加引号的变量可能导致单词拆分或通配符意外展开(如 [ $var = *.txt ] 可能报错)。 |
正则表达式匹配 | 支持 =~ 运算符进行正则匹配(如 [[ $str =~ ^[0-9]+$ ]] )。 | 不支持正则表达式,需结合 expr 或外部工具(如 grep )。 |
变量为空时的安全性 | 空变量或未定义变量不会导致语法错误(如 [[ $var == "" ]] 安全)。 | 空变量可能导致语法错误(如 [ $var = "" ] 会报 [: =: unary operator expected )。 |
兼容性 | Bash、Zsh、Ksh 等现代 shell 支持,非 POSIX 标准。 | 所有 POSIX 兼容 shell(如 Dash、Bash 的 POSIX 模式)均支持。 |
3. 何时使用哪种语法?
场景 | 推荐语法 | 原因 |
---|---|---|
现代 Bash/Zsh 脚本 | [[ ]] | 更安全、功能更丰富,避免转义和引号问题。 |
需要兼容 POSIX shell(如 Dash) | [ ] | 确保脚本在最小化环境中运行(如 Docker 的 /bin/sh 可能是 Dash)。 |
简单数值比较 | [ ] | 在兼容性优先的场景中,[ ] 的语法更通用(如 [ "$a" -eq "$b" ] )。 |
复杂字符串/正则匹配 | [[ ]] | 仅 [[ ]] 支持通配符和正则表达式,代码更简洁。 |
4. 注意事项
[[ ]]
是 Bash 扩展:在非 Bash 环境中(如sh
)可能不可用。[ ]
是test
命令的别名:等价于test "$a" = "$b"
,但需严格遵循语法。
相关文章:
相似命令对比
awk 命令用法表格 场景命令示例说明示例输入文件内容 (input.txt)输出结果1. 基础字段提取awk -F: {print $1} /etc/passwd按分隔符提取第1列(如用户名)。root:x:0:0:root:/root:/bin/bashroot2. 多字段组合输出awk -F: {print $1, $3, $7} /etc/passwd…...
Vuerouter 的底层实现原理
文章目录 前言🧩 Vue Router 底层实现核心原理🧠 执行流程图(简化版)🔍 核心模块源码原理(简要)① 路由注册与匹配(createRouterMatcher)② 历史模式管理器(c…...
按拼音首字母进行排序组成新的数组(vue)
数据按首字母相同的组成新的数组,使用拼音(Pinyin)转换 比如想要的效果: 下载 npm install pinyin代码: import pinyin from "pinyin"; let studentAllList [{onLine: true,points: undefined…...
在IPv6头部中,Next Header字段
在IPv6头部中,Next Header字段 在IPv6头部中,Next Header字段是一个8位的字段,它的作用是指示下一个头部扩展的类型或者最终的传输层协议类型。这个字段的值决定了数据包中紧随IPv6头部之后的头部扩展的类型,或者是直接指向传输层…...
vue项目部署后部分子页面刷新后403
经过我的仔细分析;终于找到了是刷新后路径后面自动拼接了 / ;如 66.66.66.66/aPage 刷新后变成了 66.66.66.66/aPage/ 导致403 方法一: 修改路由为hash模式 // router/index.jsimport { createRouter, createWebHistory, createWebHashHist…...
C# NX二次开发:曲线和点位相关UFUN函数详解
大家好,今天要介绍查询曲线上点位和返回沿着曲线偏移一定距离的UFUN函数。 (1)UF_MODL_ask_curve_points:这个函数的定义为按照给定条件查询曲线上的点位。 Defined in: uf_modl_curves.h Overview Returns an array of 3D …...
服务器数据恢复—硬盘坏道导致EqualLogic存储不可用的数据恢复
服务器存储数据恢复环境&故障: 一台EqualLogic某型号存储中有一组由16块SAS硬盘组建的RAID5阵列。上层采用VMFS文件系统,存放虚拟机文件,上层一共分了4个卷。 磁盘故障导致存储不可用,且设备已经过保。 服务器存储数据恢复过程…...
【2019 CWE/SANS 25 大编程错误清单】12越界写入
案例1: void tonly_aw21036_led_drv_pwm_init(tonly_gpio_pin_t gpio_pin, uint8_t pwm) {uint8_t pin gpio_pin - AW21036_GPIO_PIN_START;if (pin < AW21036_LED_MAX_CHANNEL){aw21036_ctx.pwm[pin] pwm; /* 有效通道号: 0-35 */}else{TONLY_LED_LOG_E(&qu…...
redis bitmap数据类型调研
一、bitmap是什么? redis原文: Bitmaps are not an actual data type, but a set of bit-oriented operations defined on the String type . This means that bitmaps can be used with string commands, and most importantly with SET and GET. 翻…...
[Windows] Ghost Downloader v3.5.9 开源多线程下载工具
[Windows] Ghost Downloader 链接:https://pan.xunlei.com/s/VOPejV3veb6v-im-wVmMkXkhA1?pwdpzwk# Ghost Downloader 是一款专为Windows平台设计的多线程下载工具,完全由Python语言开发。它以其高效的多线程下载技术和断点续传功能而著称,…...
互联网大厂Java求职面试:AI集成与云原生架构设计
互联网大厂Java求职面试:AI集成与云原生架构设计 面试场景:技术总监与程序员郑薪苦的对话 技术总监:郑薪苦,我们今天来聊聊你在AI集成场景中的经验。你有没有尝试过将Spring AI与大模型结合? 郑薪苦:有啊…...
gitignore的相关用法
gitignore .gitignore 是 git 用于管理需要忽略追踪的文件。.gitignore 一般用于远程仓库多人协作的场景,最常见的情况是,使用 MacOS 系统的程序员要在 .gitignore 中添加 .DS_Store 防止将其推送至仓库中。或在开发代码时,将调试文件忽略&a…...
前端取经路——工程化渡劫:八戒的构建之道
大家好,我是老十三,一名前端开发工程师。前端工程化就像八戒的钉耙,看似简单却能降妖除魔。在本文中,我将带你探索前端工程化的九大难题,从模块化组织到CI/CD流程,从代码规范到自动化测试,揭示这些工具背后的核心原理。无论你是初学者还是资深工程师,这些构建之道都能帮…...
Android 数据持久化之 Room 数据库存储
一、简介 Room 是 Google 推出的 Android 持久层框架,建立在 SQLite 之上,提供了一个抽象层,简化了数据库操作。它通过注解和编译时检查来确保数据操作的正确性。 Room 主要由以下三个组件组成: Entity(实体):定义封装实际数据的实体类,每个实体类对应数据库中的一个…...
Selenium Web自动化测试学习笔记(一)
自动化测试 技术手段模拟人工,执行重复性任务,准确率100%,高于人工 selenium 可通过浏览器驱动控制浏览器,通过元素定位模拟人工,实现web自动化,没有焦点(把浏览器放在最小化依然可以&#x…...
一个项目的周测试的文档(Billing Service 测试文档)
目录 Pending Pool 各项功能测试... 2 1. Assign 分配功能。测试结果: ok. 2 2. Reset 功能。 测试结果: OK. 3 3. Discard 功能。测试结果: 提示discard成功,但是historical job没有找到记录... 3 4. E…...
二分查找习题
一、二叉搜索树与双向链表(剑指 Offer JZ36 ) 解题思路要点 - 利用中序遍历特性:二叉搜索树的中序遍历结果是有序序列,这是将二叉搜索树转化为有序双向链表的关键。通过中序遍历可以按从小到大的顺序访问节点,满足…...
JumpServer批量添加资产
环境说明:我的环境是H3C网络设备环境 一、在linux系统环境下通过Python脚本获取交换机信息,IP地址和设备名称一一对应,脚本如下: cat get_device-sysname.py import re from netmiko import ConnectHandler from concurrent.fut…...
使用 Python 与 Java 实现接入 AI 大模型的 MCP 协议:原理与实战
一、什么是 MCP 协议? MCP(Model Context Protocol) 是一种专为远程控制和管理 AI 大模型而设计的通信协议。它允许客户端通过网络向服务器发送请求,以执行诸如模型推理、状态查询、参数更新等操作,并接收相应的结果。…...
Nginx核心原理以及案例分析(AI)
一、Nginx核心原理分析 1. 事件驱动与非阻塞模型 Epoll异步机制:基于Linux的epoll模型实现异步非阻塞I/O处理,单线程可高效管理数万并发连接,避免传统select模型的轮询性能瓶颈。多进程架构:采用Master-Worker模式&…...
ChromeDriverManager的具体用法
ChromeDriverManager 是 webdriver_manager 库的一部分,它用于自动管理 ChromeDriver 的下载和更新。使用 ChromeDriverManager 可以避免手动下载 ChromeDriver 并匹配系统中安装的 Chrome 浏览器版本。以下是 ChromeDriverManager 的基本用法: 步骤 1…...
Linux:认识基础IO
1.理解"⽂件" 1.1狭义理解 ⽂件在磁盘⾥ 磁盘是永久性存储介质,因此⽂件在磁盘上的存储是永久性的 磁盘是外设(即是输出设备也是输⼊设备) 磁盘上的⽂件 本质是对⽂件的所有操作,都是对外设的输⼊和输出 简称 IO 1.2广…...
SimpleMindMap:一个支持AI的思维导图软件
SimpleMindMap(思绪思维导图)是一款开源、跨平台且功能丰富的思维导图工具,支持 Web 端及多平台客户端(Windows、macOS、Linux)。 SimpleMindMap 提供的主要功能如下: 插件化设计,除了核心功能…...
数据库故障排查指南:MySQL 解决常见问题解决
数据库是现代 IT 系统的核心引擎,承载着企业最重要的数据资产。数据库的稳定、高效运行直接关系到业务的生死存亡。然而,由于软硬件、配置、应用访问等多种因素的影响,数据库故障难以完全避免。当故障发生时,能够迅速定位、分析并解决问题,同时确保数据安全不受影响,是每…...
2025年特种作业操作证考试题库及答案(登高架设作业)
一、单选题 202.带电跨越架羊角撑杆高度( )m。 A.1 B.1.1 C.1.2 答案:B 203.跨越架拉线地锚埋深必须按( )及架体设计要求进行。 A.现场情况决定 B.土质情况 C.地锚设计分坑图 答案:C 204.单排脚手架洞口处&#…...
Open CASCADE学习|ApplicationFramework 框架使用指南
在现代 CAD(计算机辅助设计)应用开发中,构建一个高效、可扩展且用户友好的应用程序框架是至关重要的。Open CASCADE(简称 OCC)提供了一个功能强大的 ApplicationFramework(应用程序框架)&#x…...
hadoop中的序列化和反序列化(3)
3. Java的序列化 Java提供了内置的序列化机制,通过java.io.Serializable接口实现。 3.1 如何实现Java序列化 让类实现Serializable接口。 使用ObjectOutputStream进行序列化。 使用ObjectInputStream进行反序列化。 示例代码 序列化 java 复制 import jav…...
PostgreSQL给新用户授权select角色
✅ 切换到你的数据库并以超级用户登录(例如 postgres): admin#localhost: ~$ psql -U postgres -d lily✅ 创建登录的账号机密吗 lily> CREATE USER readonly_user WITH PASSWORD xxxxxxxxxxx; ✅ 确认你授予了这个表的读取权限…...
MySQL 8.0 OCP(1Z0-908)英文题库(1-10)
目录 第1题题目解析正确答案 第2题题目解析正确答案 第3题题目解析正确答案 第4题题目解析正确答案 第5题题目解析正确答案 第6题题目解析正确答案 第7题题目解析正确答案 第8题题目解析正确答案 第9题题目解析正确答案 第10题题目解析正确答案: 第1题 Your MySQL …...
南京市出台工作方案深化“智改数转网联”,物联网集成商从“困局”到“蓝海”!
为落实《江苏省深化制造业智能化改造数字化转型网络化联接三年行动计划(2025-2027年)》,南京市近日出台“工作方案”,部署五大行动17项重点任务,进一步深化全市制造业智能化改造、数字化转型、网络化联接(以…...
系统思考:教育焦虑恶性循环分析
今天和团队的小伙伴一起拆解了一个父母教育焦虑与报班行为之间的系统环路图,报班越多 ➡ 孩子自由时间越少 ➡ 情绪调节力下降 ➡ 学习效率更低 ➡ 成绩不理想 ➡ 家长更焦虑 ➡ 继续加码报班…… 一圈一圈,像是陷入了“焦虑的恶性循环”。 这也是我一直…...
(已完结)完美解决C盘拓展卷是灰色的无法扩容的问题以及如何正确地在WINDOS上从一个盘扩容到C盘
众所周知,window系统在“计算机”管理中自带了一个磁盘管理系统 但是在使用过程中会出现各种各样无法扩容的毛病。 第一:首先排查,大多数人在扩容之前忽视了一点就是,我们现代的很多新机器都是默认开启BitLocker加密的ÿ…...
优选算法系列(8.多源BFS)
简介: 01 矩阵(medium): 题目链接:542. 01 矩阵 - 力扣(LeetCode) 算法: 对于求的最终结果,我们有两种方式: 第⼀种方式:从每⼀个 1 开始&#…...
迈向AI辅助数据分析代码生成的透明性与知识共享
李升伟 摘译 生成式人工智能(AI)及尤其大型语言模型(LLMs)正在改变我们进行数据科学研究的方式. 最显著的例子包括科学家使用该技术与科学数据交互, 回答数据分析问题, 生成数据分析代码以及(重新)撰写科研手稿. 然而遗憾的是&am…...
autojs和冰狐智能辅助该怎么选择?
最近打算做自动化脚本,在autojs和冰狐智能辅助中做选择,不知道该怎么选。没办法只能花费大量时间仔细研究了autojs和冰狐智能辅助,综合考虑功能需求、开发复杂度、编程经验及项目规模等因素。以下是两者的核心对比及选择建议,仅供…...
小数的二进制表示
相信很多人都知道整数的二进制表示方法,但是小数的二进制就不一定了。 想来简单说一下整数的,就是不断的除以2取余数, 大致这样 从下往上取,这里42的结果就是101010 而且每个整数都有他对应的二进制数,但是小数转二…...
信息系统项目管理师-软考高级(软考高项)2025最新(十)
个人笔记整理---仅供参考 第十章项目进度管理 10.1管理基础 10.2项目进度管理过程 10.3规划进度管理 10.4定义活动 选C 10.5排列活动顺序 10.6估算活动持续时间 10.7制订进度计划 制订进度计划4个步骤(背,案例可能会考!) 10.8控制…...
Linux内核初始化机制全解析:从pure_initcall到late_initcall
引言 Linux内核的启动过程是一个高度有序的初始化流程,涉及数百个模块和子系统的协同工作。为了确保依赖关系正确、硬件资源按需分配,内核通过一系列初始化宏(如pure_initcall、subsys_initcall、late_initcall等)将函数划分为不同的优先级,按严格顺序执行。本文将深入探…...
pcie协议复位
pcie协议复位共有4中情况;cold reset;warm reset;hot reset;function level reset; 分类: 依据spec 6.6: Conventional reset(传统复位):cold,…...
boost笔记: Cannot open include file: ‘boost/mpl/aux_/preprocessed/plain/.hpp‘
1. 问题描述 因为一下库定义了宏and,导致boost的文件包含and.hpp展开成&.hpp,所以出现以下错误 Cannot open include file: ‘boost/mpl/aux_/preprocessed/plain/&.hpp’ 2. 解决方案 在定义宏之前包含boost文件,但这种方案的缺点…...
Xilinx XCKU11P-2FFVA1156I 赛灵思 FPGA AMD Kintex UltraScale+
XCKU11P-2FFVA1156I 属于 AMD Kintex UltraScale™ FPGA 家族,采用 TSMC 20 nm FinFET 工艺,兼顾高性能与功耗效率,提供约 653 100 个逻辑单元、2 928 个 DSP 切片、21.1 Mb Block RAM 和 22.5 Mb UltraRAM,可广泛应用于网络加速、…...
hadoop中的序列化和反序列化(4)
4. Hadoop的序列化 Hadoop提供了自己的序列化机制,用于高效地处理分布式计算中的数据传输。Hadoop的序列化机制比Java的序列化更高效,更适合大规模数据处理。 4.1 Hadoop序列化的特点 高效:Hadoop的序列化格式紧凑,适合大规模数…...
实现引用计数线程安全的shared_ptr
c11引入了三个智能指针,用来自动管理内存,使用智能指针可以有效地减少内存泄漏。 其中,shared_ptr是共享智能指针,可以被多次拷贝,拷贝时其内部的引用计数1,被销毁时引用计数-1,如果引用计数为…...
今日行情明日机会——20250507
指数今天放量上涨,政策层面也释放出重大利好消息~ 上证缺口已补,大盘股表现总体较好 深证60分钟缺口依然未补,等待后续走势~ 2025年5月7日涨停股主要行业方向分析 一、核心主线方向 军工(政策催化地缘驱动) • 涨停…...
配置Hadoop集群-测试使用
(一)上传小文件 上传文件的时候,我们传一个大一点的(>128M),再传一个小一点的。对于大一点的文件,我们要去看看它是否会按128M为单位去拆分这个大文件,而拆分成大文件之后&#…...
MEGA3:分子进化遗传学分析和序列比对集成软件
李升伟 摘译 摘要 在分子进化和群体遗传学的理论基础稳固确立后,比较DNA和蛋白质序列分析在重建物种和多基因家族的进化历史、估计分子进化速率以及推断塑造基因和基因组进化的性质和程度方面发挥了核心作用。随着高通量测序技术和新颖的统计及计算方法的发展&…...
21. LangChain金融领域:合同审查与风险预警自动化
引言:当AI成为24小时不眠的法律顾问 2025年某商业银行的智能合同系统,将百万级合同审查时间从平均3周缩短至9分钟,风险条款识别准确率达98.7%。本文将基于LangChain的金融法律框架,详解如何构建合规、精准、可追溯的智能风控体系…...
7D-AI系列:模型微调之mlx-lm
大模型的出现,导致信息量太大,只有静心动手操作,才能得到真理。 文章目录 环境要求安装示例mlx-lm微调工具参数准备数据集下载模型微调模型合并模型验证结果验证微调前的模型验证微调后的模型 环境要求 macbook pro m系列芯片mlx环境已安装 …...
数据可视化:php+echarts实现数据可视化(包含echart安装引入)
一、实现效果 实现动态时间,多列柱状图,单列柱状图,普通表格,表格动画等效果 二、实现 1、动态时间显示 通过php获取当前时间 设置计时器来动态显示时间秒数 <!-- 时间动画 --> <script>// 动态更新时间中的秒数function updateTime() {const now = new D…...
《Python星球日记》 第47天:聚类与KMeans
名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏:《Python星球日记》,限时特价订阅中ing 目录 一、聚类与…...