shell的正则表达式

2024-06-24 02:52
文章标签 shell 正则表达式

本文主要是介绍shell的正则表达式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、正则表达式:匹配的是文本内容(文本三剑客:grep:过滤文本内容       sed:针对文本内容进行增删改查        awk:按行取列)

二、grep:过滤

1.grep:过滤文本内容,作用就是使用正则表达式来匹配文本内容。

   grep命令格式:grep -m 1 “bash”  /etc/passwd

                            cat  /etc/passwd   |    grep  -m  1 “bash”

  grep -m +数字+内容:只取包含内容的那几行

grep -v +内容:(取反)除了此内容所在行不显示,其它都显示

grep -n +内容:显示匹配内容行及其行号

grep -c +内容:只统计匹配内容的总行数

 grep -o +内容:只显示匹配内容的结果

grep -q +内容:静默模式,不输出任何信息 

grep  -A  数字+内容:匹配文件内所属内容及内容的下几行

grep -B 数字+内容:匹配文件内容及内容的上几行

grep -C  数字 +内容 :匹配文件内容及内容的上下几行

grep -e 内容 -e  内容:逻辑或,实现多个内容查找

grep  -E或egrep :都是正则表达式,省略表示次数命令繁琐的斜杠

grep  -f  脚本1  脚本2:匹配两个不同脚本内相同的内容

grep  -r:递归目录下的文件内容,不包含软连接 

grep -R:递归目录下,所有包含过滤内容的文件以及匹配的内容行,包括软连接

2.sort:以行为单位对文件内容进行排序

             格式:sort   -选项   文本

sort  -f :忽略大小写,默认会把大写字母排在前面

sort  -b:忽略每行的空格进行排序(有空格不影响排序)

sort  -n : 按照数字优先排序(类似-b)

sort -r :反向排序

sort -u:去重,不连续相同的数据只显示一行

sort  -n  文件1  -o  文件2 :把排序后的结果输出到指定文件

 3.uniq:去除连续重复的行只显示一行

 uniq -c:合并连续重复的行,不连续的不合并,并且统计重复行的次数

 uniq -u :显示仅出现一次的行(包括不连续的重复行)

 uniq -d : 仅显示重复出现的行(必须是连续的行)

 4.tr:用来对标准输出的字符进行替换、压缩、删除

 tr -c:保留字符集1的字符,其它的字符用字符集2来进行替换,并且会默认多打印一个字符

tr -d:删除字符

tr -s:把连续重复出现的字符串压缩为一个字符,也可以替换字符集

 5.cut:对字段进行截取和剪裁

cut -d:指定分隔符

cut -f:对字段进行截取

cut -b :以字节为单位截取(不常用)

cut -c:以字符为单位截取(不常用) 

head -n1 /etc/passwd:只显示文本的第一行

cut  --complement :排除所指定的字段再输出

cut --output -delimiter:更改原内容的分隔符

6.split:对文件进行分割,把文件拆分成若干个小文件

split  -l:指定行数进行拆分

split  -b:指定文件大小进行拆分

 面试题:如果现在有一个日志文件,有5G大小,能不能快速的进行打开

 回复:这种文件推荐使用split按大小进行拆分

7.paste、cat对文件进行合并

paste与cat区别:paste以左右合并,cat以上下合并。

8.统计当前主机的连接状态:有多少个LISTEN 有多少个 ESTAB

ss -antp:查看当前主机的连接状态

grep  -v  "^State" :过滤掉State行

cut  -d  " " -f  1 :以空格为分隔符截取文件的第一列

sort :对文件进行排序

uniq  -c :合并重复出现的行,并且统计重复出现行的次数

三、1.正则表达的作用:由一类特殊字符以及文本字符所编写的一个模式,模式又来匹配文件当中的内容(字符)。主要匹配的是文件内容及命令结果。

2.通配符(*  ?  [ ]):只能用于匹配文件名和目录名,不能匹配文件内容和命令结果。

       * :匹配任意一个或多个字符

       ?:匹配任意一个字符

      [  ]:匹配指定范围内任意一个单个字符

3.基本正则表达式:

3.1元字符(字符匹配) 

“.”(点) :任意单个字符

" \. ":转义符(恢复其本意,点就是点不代表任意字符)

[  ] :匹配指定范围内的任意单个字符

[^  ]:匹配指定范围外的任意单个字符

3.2表示次数:匹配字符出现的次数

* :匹配前面的字符任意次,包括0次,尽可能长的匹配

.*  :匹配前面的字符至少要有一次

\?:匹配前面的字符0次或1次,可有可无

\+ :匹配前面的字符至少要出现一次

这篇关于shell的正则表达式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1088980

相关文章

【Linux进阶】UNIX体系结构分解——操作系统,内核,shell

1.什么是操作系统? 从严格意义上说,可将操作系统定义为一种软件,它控制计算机硬件资源,提供程序运行环境。我们通常将这种软件称为内核(kerel),因为它相对较小,而且位于环境的核心。  从广义上说,操作系统包括了内核和一些其他软件,这些软件使得计算机能够发挥作用,并使计算机具有自己的特生。这里所说的其他软件包括系统实用程序(system utility)、应用程序、shell以及公用函数库等

Java中的正则表达式使用技巧

Java中的正则表达式使用技巧 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天,我们来探讨一下Java中正则表达式的使用技巧。正则表达式是一种强大的工具,用于字符串匹配、替换和分割等操作。掌握正则表达式能够大大提高我们处理文本数据的效率。 1. 正则表达式的基本概念 正则表达式(Regular Expression,简称

js 正则表达式出现问题

帮同事写个页面,出现正则表达式不管怎么改都没法匹配的情况。。。。 reg = /^sy[0-9]+$/i; if(rtx.match(reg) == null){ alert("请输入正确的RTX账号!"); return false; } 因为之前一直用的是 reg ="/^sy[0-9]+$/i"; 写PHP写习惯了。。外面多写了两个双引号……T.T 改

hbase中shell命令

HBase scan命令详解 - 简书https://www.jianshu.com/p/0ccfd59d73f4 Hbase中多版本(version)数据获取办法_牛奋lch-CSDN博客_hbase 多版本前言:本文介绍2种获取列的多版本数据的方式:shell和spring data hadoop一、hbase shell中如何获取    1、在shell端创建一个Hbase表create

Shell语法全解

Shell基础语法全解 一、shell简介二、shell格式2.1 新建一个shell脚本文件2.2 执行脚本方式 三、变量3.1系统变量3.2自定义变量3.3 特殊变量3.3.1 `$n` 传入变量3.3.2 `$#` 输入参数个数3.3.3 `$*`、`$@` 输入参数内容3.3.4 `$?` 上一条命令执行结果 四、运算符 `$[]`、`$(())`五、条件判断5.1判断数值大小5.

Android常用命令行——gradlew,adb,adb shell

gradlew 下面全是针对 windows 操作系统的。如果是 Linux / Mac 请直接用 ./ 前缀。 gradlew clean //类似Clean Project gradlew -v //查看Gradle、Groovy、Ant、JVM等的版本gradlew build --info //编译并打印日志gradlew dependencies --info //查看详细的依

Linux——Shell脚本

重头戏终于来了! 一、Shell脚本简介 shell script 是利用 shell 的功能所写的一个『程序 (program)』,这个程序是使用纯文本文件,将一些 shell 的语法与指令(含外部指令)写在里面, 搭配正规表示法、管线命令与数据流重导向等功能,以达到我们所想要的处理目的。 #!/bin/bash 在宣告这个 script 使用的 shell 名称。 用vi test.s

biostar handbook(六)|正则表达式和K-mers在模式匹配中的使用

模式匹配中的正则表达式和k-mer 模式匹配指的是在看似杂乱无章的系统中找到符合要求的部分。比如说你想从基因组中寻找motif,转录因子结合位点,CDS, 或者检测测序结果里是否有接头等,这些行为都可以解读为根据已有的模式去寻找目标序列中符合要求的片段。后面介绍的序列模式匹配的两种方法,正则表达式和k-mers。 正则表达式的基础概念 正则表达式(regular expression)的概念

从PATH说起的shell命令行替换

许久之前,师弟问了我一个问题,为什么shell中添加环境变量的写法是下面这种方式 PATH=~/.lib:$PATH; export PATH 而下面这种会报错呢? $PATH=~/.lib:$PATH; export PATH 当时我的回答是,"shell就是这样子规定的呀"。 回答的同时,也突然间发现有些自己感觉很熟悉的概念,原来自己并没有那么清楚,因此这一篇讲讲shell的命令行

利用一个正则表达式的一个例子来讲解Java中的两种for循环。

package 正则表达式;public class Rudolph {public static void main(String[] args) {// TODO Auto-generated method stubString[] str = new String[]{"Rudolph","[rR]udolph","[rR][aeiou][a-z]ol.*","R.*"};for(Strin