shell正则表达式

sort命令

以行为单位对文件内容进行排序,也可以根据不同的数据类型来排序
比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。

sort  对行内容进行升序排序

XXX | sort 选项          sort 选项 文件 

常用选项:

-n   按照数组进行排序
-r    反向排序
-u 排序后去重(表示相同的数据仅显示一行)
-t '字段分隔符' -k 字段序号根据-t 指定的分隔符的第 k个字段进行排序
-k指定排序字段
-o <输出文件>将排序后的结果转存至指定文件
-f忽略大小写,会将小写字母都转换为大写字母来进行比较
-b忽略每行前面的空格

uniq   对连续的重复行进行去重

XXX | uniq 选项          uniq 选项 文件 

常用选项:

-c   对连续的重复行进行去重,并统计重复次数
-d   仅输出连续重复的行
-u   仅输出不连续重复的行


tr   对输入的内容进行替换

XXX | tr 选项 '参数1' ['参数2']

常用选项:

-t    tr命令的默认选项,使用 参数2 的字符替换成 参数1 的字符
-c    仅保留 参数1 的字符,其它字符(包括\n)都替换成 参数2 的字符
-s    根据 参数1 进行去重,如果有 参数2 则再用 参数2 的字符替换 参数1 的字符
-d   删除所有 参数1 的字符

删除空行  

cat 文件 | grep -v "^$" 
cat 文件 | tr -s "\n"

Windows的另起一行格式(\r\n)转换成 Linux的另起一行格式(\n)      

cat 文件 | tr -d '\r' > 新文件

 dos2unix 文件

对数组排序  

echo ${数组名[@]} | tr ' ' '\n' | sort -rn | tr '\n' ' '


cut  对行内容进行字段截取

XXX | cut 选项 参数

-d '分隔符' -f 字段序号根据 -d 指定的分隔符的截取显示 -f 指定的字段
--complement取反,不显示 -f 指定的字段
--output-delimiter '分隔符'指定输出的字段分隔符

     
                 
 

字符串分片      

echo ${变量:下标:长度}                       #下标起始从0开始
echo $变量 | cut -b 起始下标-终止下标        #下标起始从1开始
expr substr $变量 起始下标 长度              #下标起始从1开始


split   按照格式拆分文件

-l根据行数分割文件
-b根据大小分割文件
-d输出的目标文件后缀用数字替代

如何将一个10G文件分割为10个1G的文件        split -b 1G -d 原文件  目标文件名前缀
如何将一个100行文件分割为10个10行的文件    split -l 10 -d 原文件  目标文件名前缀

paste  将多个文件按照列进行合并

paste 选项 文件1 文件2 ...

-d '分隔符'指定输出的字段分隔符
-s 将每个列横向输出

合并文件的行   cat 文件1 文件2  ... > 新文件
合并文件的列   paste -d '分隔符' 文件1 文件2 ... > 新文件


eval   在命令行执行前,先将命令行里的变量置换成对应的值后,再执行命令

a=100
b=a
eval echo \$$b  置换成-->  echo $a  执行-> 100
eval $b=50  置换成--> a=50 执行
echo $a -> 50

通配符和正则表达式的作用范围:

通配符        作用范围 匹配文件/目录名
正则表达式    作用范围 匹配文件内容

正则表达式元字符 

基础元字符

\     转义字符,将一些特殊符号转义成普通字符 \? \! \\  将一些普遍字母字符转义成特殊字符 \n \t \r
^     匹配以指定字符串开头的  ^XXX
$     匹配以指定字符串结尾的  XXX$    ^$
.      代表除了 \n 以外的任意字符
[XXX]  匹配中括号里的列表中的任意一个字符  [.\n]  [0-9]  [a-zA-Z0-9]
[^XXX]匹配除了中括号里的列表中的任何字符  [^0-9]匹配所有非数字的字符   [^a-zA-Z]匹配所有非大小字母的字符
*      匹配*前面的字符或表达式任意次数(包括0次 1次或多次) .*   [0-9]*
{n}   匹配{}前面的字符或表达式 n 次
{n,}  匹配{}前面的字符或表达式至少 n 次(大于等于 n 次)
{n,m} 匹配{}前面的字符或表达式 n 到 m 次(大于等于 n 次且小于等于 m 次)

(注:grep  sed 使用时 {} 前面要加 \ ;egep  awk  grep -E  sed -r 使用时 {} 前面不用加 \)


扩展元字符

+     匹配+前面的字符或表达式至少1次(大于等于1次 {1,})
?     匹配?前面的字符或表达式0次或1次({0,1})
()    将()里的表达式作为一个整体    (oo)*   (oo)?
|或       (oo|aa)   (oo|aa)?




     

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/704615.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TRL校准和De-embedding的区别以及如何操作?

Fiture的性能可以在测试前利用TRL校准件移除掉&#xff0c;但是TRL的步骤比较繁琐或者说TRL校准件&#xff08;包含直通、反射、多条Line&#xff09;很难设计(如果做到很高的频率对设计和加工制造的要求都很高)&#xff0c;此时可以选择只做一根2x Through&#xff08;直通件&…

Beego 使用教程 6:Web 输入处理

beego 是一个用于Go编程语言的开源、高性能的 web 框架 beego 被用于在Go语言中企业应用程序的快速开发&#xff0c;包括RESTful API、web应用程序和后端服务。它的灵感来源于Tornado&#xff0c; Sinatra 和 Flask beego 官网&#xff1a;http://beego.gocn.vip/ 上面的 bee…

PostgreSQL(十二)报错:Tried to send an out-of-range integer as a 2-byte value: 51000

目录 一、报错场景二、源码分析三、实际原因&#xff08;更加复杂&#xff09;四、解决思路 一、报错场景 今天写了一个历史数据处理程序&#xff0c;在开发环境、测试环境都可以正常执行&#xff0c;但是放到生产环境上就不行&#xff0c;报了一个这样的错误&#xff1a; or…

FreeRTOS消息队列queue.c文件详解

消息队列的作用 消息队列主要用来传递消息&#xff0c;可以在任务与任务之间、中断与任务之间传递消息。 传递消息是通过复制的形式&#xff0c;发送方发送时需要不断复制&#xff0c;接收方接收时也需要不断复制。虽然会有内存资源的浪费&#xff0c;但是可以保证安全。 假…

Zynq UltraScale+ RFSoC 配置存储器器件

Zynq UltraScale RFSoC 配置存储器器件 下表所示闪存器件支持通过 Vivado 软件对 Zynq UltraScale RFSoC 器件执行擦除、空白检查、编程和验证等配置操 作。 本附录中的表格所列赛灵思系列非易失性存储器将不断保持更新 &#xff0c; 并支持通过 Vivado 软件对其中所列…

5.2 操作系统安装必备知识

目前操作系统安装方式接近于全自动化&#xff0c;用户无需做过多操作就能完成操作系统安装。但是操作系统安装也有其复杂的一面&#xff0c;例如固件及分区表的不同就会导致操作系统安装失败。本节主要介绍系统安装的一些必备知识。 5.2.1 BIOS 概述 BIOS(Basic Input/Output …

OpenAI 刚刚宣布了 “GPT-4o“ 免费用户开放、通过 API 可用

OpenAI 刚刚宣布了 “GPT-4o”。它可以通过语音、视觉和文本进行推理。 该模型速度提高了 2 倍&#xff0c;价格降低了 50%&#xff0c;比 GPT-4 Turbo 的速率限制高出了 5 倍。 它将对免费用户开放、通过 API 可用。 与 GPT-4 相比&#xff0c;GPT-4o 的速度和额外的编码能力…

申请一个开发者域名

申请一个开发者域名 教程 fourm.js.org 因本地没安装 hexo 环境&#xff0c;模板下载的 html

构建智能化不动产管理系统:数字化引领未来房地产行业发展

随着城市化进程的不断推进和房地产市场的持续发展&#xff0c;不动产管理系统的重要性日益凸显。在这一背景下&#xff0c;构建智能化不动产管理系统成为推动房地产行业数字化转型的关键举措。本文将深入探讨智能化不动产管理系统的构建与优势&#xff0c;助力房地产企业把握数…

【上海大学计算机组成原理实验报告】五、机器语言程序实验

一、实验目的 理解计算机执行程序的实际过程。 学习编制机器语言简单程序的方法。 二、实验原理 根据实验指导书的相关内容&#xff0c;指令的形式化表示是指采用一种规范化的符号系统&#xff0c;以更清晰、精确地描述和表示指令的逻辑功能和操作步骤。 汇编是一种编程语言…

MYSQL中的DQL

语法&#xff1a; select 字段列表 from 表名列表 where 条件列表 group by 分组字段列表 having 分组后条件列表 order by 排序字段 limit 分页参数 条件查询 语法&#xff1a; 查询多个字段&#xff1a;select 字段1&#xff0c;字段2 from表名 查询所有字段&#xff1a…

【Python大数据】PySpark

CSDN不支持多个资源绑定&#xff0c;另外两个数据文件下载&#xff1a; 订单数据-json.zip search-log.zip Apache Spark是用于大规模数据(large-scala data)处理的统一(unified)分析引擎 简单来说&#xff0c;Spark是一款分布式的计算框架&#xff0c;用于调度成百上千的服…