首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为sed创建否定的正则表达式

基础概念

sed(Stream Editor)是一种流编辑器,它允许通过正则表达式进行文本替换、删除、插入等操作。正则表达式是一种强大的文本处理工具,用于匹配字符串中的特定模式。

否定正则表达式

否定正则表达式通常用于匹配不包含某个特定模式的文本。在sed中,可以通过使用否定前瞻(negative lookahead)来实现这一点。

相关优势

  • 灵活性:否定正则表达式允许你精确地选择不匹配特定模式的文本。
  • 效率:相比于其他方法,使用否定正则表达式可以更高效地过滤和处理大量文本数据。

类型

  • 否定前瞻(?!pattern)
  • 否定后顾(?<!pattern)

应用场景

  • 数据清洗:从日志文件中排除包含特定关键字的行。
  • 内容过滤:在网页抓取时排除包含广告或恶意代码的页面。

示例问题及解决方案

假设我们有一个文本文件example.txt,内容如下:

代码语言:txt
复制
apple
banana
cherry
date
elderberry
fig
grape

我们希望使用sed命令排除包含字母a的行。

原因

直接使用sed的正则表达式进行否定匹配比较复杂,因为sed本身不直接支持否定前瞻。

解决方案

我们可以使用一个技巧,通过匹配包含特定字符的行并删除它们来实现否定效果。

代码语言:txt
复制
sed '/a/d' example.txt

这个命令会删除所有包含字母a的行。

示例代码

代码语言:txt
复制
# 创建一个示例文件
echo -e "apple\nbanana\ncherry\ndate\nelderberry\nfig\ngrape" > example.txt

# 使用sed命令排除包含字母a的行
sed '/a/d' example.txt

参考链接

通过上述方法,你可以有效地使用sed创建否定的正则表达式来处理文本数据。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

awk-grep-sed简单使用总结(正则表达式的应用)

\w+  匹配一个完整的邮件地址 注意:当在字符集合里使用的时候,像".""+"等字符被解释为普通字符,不需要转义。不过转义也可以。         ...#[ ]+(\w+)[ ]+\1 //匹配空格若干字符加空格若干  \1表示引用(\w+)内容 类似于sed  #echo $hello | sed 's/\(......\)\(.*\)\(...\)...awk每次在在文件中读取一行,找到域分隔符,设置其域为n,直到一新行,然后,划分这一行作为一条记录,接着awk再次启动下一行读进程。 awk语句由模式和动作组成,模式可以是任何条件语句或者正则表达式。...确保命令内的所有引号成对出现 确保用花括号{}括起动作语句,用()括起条件语句 awk中NF指定的是域的个数,NR指定行数;$NF指定最后一个域的值;$NR指定依次打印一遍行列 匹配符~:为使一域号匹配正则表达式... gsub(r,s)    在整个$0中用s代替r    类似于sed查找和替换  index(s,t)  返回s中字符串t的第一位置  length(s)   返回字符长度  # awk '{print

2.3K90

sed 命令+正则表达式

] 输入文件            第一行具有sed命令解释器的sed脚本文件     option如下:       n 不打印; sed不写编辑行到标准输出,缺省为打印所有行(编辑和未编辑),p命令可以用来打印编辑行...*ing,而不是*ing     打印行号:  sed -e '/music/=' temp.txt     附加文本:(创建sed脚本文件)chmod u+x script.sed,运行时....因此,上述正则表达式将无法与诸如 “abc”等的字符串匹配,因为“abc”中的最后一个字符为字母而非数字。   ...例如:   /to|too|2/   上述正则表达式将会与目标对象中的 “to”, “too”, 或 “2” 相匹配。   正则表达式中还有一个较为常用的运算符,即否定符 “[^]”。...与我们前文所介绍的定位符 “^” 不同,否定符 “[^]”规定目标对象中不能存在模式中所规定的字符串。

3.4K20
  • linux下sed正则表达式匹配批量替换文件中的内容

    sed命令介绍 sed是一种流编辑器,它是文本处理中非常有用的工具,能够完美的配合正则表达式使用,功能不同凡响。...基本语法 sed的命令格式:sed [options] 'command' file(s) sed的脚本格式:sed [options] -f scriptfile file(s) 参数 参数 完整参数...x 表示互换模板块中的文本和缓冲区中的文本 y 表示把一个字符翻译为另外的字符(但是不用于正则表达式) \1 子串匹配标记 & 已匹配字符串标记 当然要使用其功能需要对正则表达式有一定了解。...使用例子 创建一个文档hello.txt: you are a boy. hello my name is han. hello hello,how do you do. hello nice to...替换hello成world,并打印到屏幕上 sed 's/hello/world/' hello.txt s 表示替换 hello 表示匹配的字母,是正则表达式 world 表示需要替换成的字母

    6K10

    Shell(五)

    Shell(五) 發佈於 2020-02-16 本篇,我们来看一下 Shell 中的函数并且复习一下之前说过的正则表达式。...函数 函数定义的基本语法为: 函数名() { {commands} } # 或者 function 函数名 { {commands} } 函数调用的基本语法为: 函数名 正则表达式...介绍 正则表达式是一种文本模式匹配,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为”元字符”)。...shell 也支持正则表达式,但不是所有的命令都支持正则表达式,常见的的命令中只有 grep、sed、awk 命令支持。...匹配除回车以外的任意字符 () 字符串分组 [] 匹配括号中的一个字符 [^] 表示否定括号中出现字符类中的字符 \ 转义字符 限定符 说明 * 某个字符之后加星号表示该字符不出现或出现多次 ?

    19020

    linux工具——神奇的正则表达式

    Hi, 我是小萝卜算子 近来有小伙伴私信我,说grep配合正则更无敌,但是正则总记不住,能不能整一个简单的参考,有需求必须安排一章 一、介绍 正则表达式是对字符串和特殊字符操作的一种逻辑公式,做开发的或多或少都接触过正则...,其在检索匹配和替换领域能发挥超乎寻常的作用,掌握好正则表达式往往能达到事半功倍的效果,详情请看下文 二、常用字符 匹配符 (只列出常用的) ^: 匹配字符串开始,在方括号内标识非,即排除 $: 匹配字符串结束...pattern): 非获取匹配,正向否定预查 (?<=pattern): 非获取匹配,反向肯定预查 (?否定预查 eg: 获取版本号 如 version1.23.4 echo 'version1.23.4' | grep -oP "(?...*[a-z])不用区分先后顺 那么完整的结构为 echo 'password' | grep -P '(?=.*[\d])(?=.*[a-z])|(?=.*[A-Z])(?=.*[a-z])|(?=.

    70020

    为你的机器学习模型创建API服务

    简单地说,API可以看作是顾客与商家之间的联系方式。如果顾客以预先定义的格式提供输入信息,则商家将获得顾客的输入信息并向其提供结果。...创建一个简单模型 以一个kaggle经典的比赛项目:泰坦尼克号生还者预测为例,训练一个简单的模型。 以下是整个机器学习模型的API代码目录树: ? 首先,我们需要导入训练集并选择特征。...需要注意的是,如果传入的请求不包含所有可能的category变量值,那么在预测时,get_dummies()生成的dataframe的列数比训练得到分类器的列数少,这会导致运行报错发生。...基于Flask框架创建API服务 使用Flask部署模型服务,需要写一个函数predict(),并完成以下两件事: 当应用程序启动时,将已持久化的模型加载到内存中; 创建一个API站点,该站点接受输入变量的请求后...API已经创建完毕,flask_api.py的代码部分也已构造完毕。

    2.5K20

    正则表达式“派别”简述

    但是,我们在使用linux下的文本处理工具如awk、sed等时,正则表达式的语法貌似还不一样,在awk中能正常工作的正则,在sed中总是不起作用,这是为什么呢?...在接下来的时间里,一直到60年代的这二十年里,正则表示式在理论数学领略得到了长足的发展,Robert Constable为数学发烧友们写了一篇总结性文章The Role of Finite Automata...在grep、egrep发展的同时,awk、lex、sed等程序也开始发展起来,而且每个程序所支持的正则表达式都或多或少的和其他的不一样,这应该算是正则表达式发展的混乱期,因为这些程序在不断的发展过程中,...答案是否定的,因为我们现在使用的linux发行版,都是集成GNU套件的,GNU是Gnu’s Not Unix的缩写,GNU在实现了POXIS标准的同时,做了一定的扩展,所以上面空白栏中的功能也能使用。...Perl比较显诸特征之一是与sed与awk兼容,这造就了Perl成为第一个通用性脚本语言。 随着Perl的不断发展,其支持的正则表达式的功能也越来越强大。

    51010

    跟萌老师学Linux的第三天

    grep:一种强大的文本搜索工具,它能使用正则表达式匹配模式搜索文本,并把匹配的行打印出来 -w:word 精确查找某个关键词 pattern -c:统计匹配成功的行的数量 -v:反向选择,即输出没有没有匹配的行...-n:显示匹配成功的行所在的行号 -r:从目录中查找pattern -e:指定多个匹配模式 -f:从指定文件中读取要匹配的 pattern -i:忽略大小写 正则表达式 是对字符串操作的一种逻辑公式,...sed 动作的文件 -r :sed 的动作支持的扩展正则(默认基础正则) -i :直接修改读取的文件内容,不输出。...:表示否定,取反: '2 !'...表示除了第二行 常见 'script' command :增删改查 a∶append,在指定行的后增加一行,内容为 a 的后面接的字串 i∶insert,在指定行的前增加一行,内容为 i 的后面接的字串

    1.1K10

    创建线程池的七种方式为_全局线程池如何创建

    大家好,又见面了,我是你们的朋友全栈君。 在 Java 语言中,并发编程往往都是通过床架线程池来实现的,而线程池的创建方式也有很多种,每种线程池的创建方式都对应了不同的使用场景。...总结来说线程池的创建可以分为两大类: 通过 Executors 创建 通过 ThreadPoolExecutor 创建 以上这两类创建线程池的方式有 7 种具体实现方法,这 7 种方法便是本文要说的创建线程池的七种方式...():创建一个固定大小的线程池,可控制并发的线程数。...2 个线程的线程池,执行 8 个任务,执行结果为: Executors.newCachedThreadPool():创建一个可缓存的线程池,若线程数超过人物所需,那么多余的线程会被缓存一段时间后再回收...10 个核心线程、最大线程数为 10 的线程池。

    83040

    sed & awk 第二版学习(二)—— 正则表达式语法

    grep、sed、awk 都使用正则表达式,但这三个程序并不能完全使用正则表达式语法中的所有元字符。为了理解正则表达式语法,必须了解由不同的元字符执行的功能。...正则表达式区分大小写,因此“A”不匹配“a”。sed 和 awk 为使用正则表达式提供了不区分大小写的选项。 接受正则表达式的程序必须首先解析正则表达式的语法来产生一个模式。...如果方括号中的第一个字符为脱字符(^),则表示否定匹配,即匹配除了换行符和类中列出的那些字符以为的所有字符。在 awk 中,也匹配换行符。连字符(-)用于表示字符类的范围。...如果类中的第一个字符为右方括号(])则表示它是类的成员。所有其它的元字符在被指定为类中的成员时都会失去它们原来的含义。 ^ 如果作为正则表达式的第一个字符,则表示匹配行的开始。...\.DS "[^1]" (3)POSIX 字符类补充 POSIX 标准定义了两类正则表达式:基本的正则表达式(BRE),grep 和 sed 使用;扩展的正则表达式,egrep 和 awk

    7610

    代码之美,正则之道

    上述[[:xxxx:]] 形式的正则表达式, 是php中内置的通用字符簇, js中并不支持. linux/osx下常用命令与正则表达式的关系 我曾经尝试在 grep 和 sed 命令中书写正则表达式,...则表示要使用 “EREs” egrep 指令后跟 “-P” 参数, 则表示要使用 “PREs” 3. sed 支持: BREs、EREs sed 指令默认是使用 “BREs” sed 指令后跟 “-r...反向引用 能在正则表达式内部使用的引用只有『反向引用』,其格式为\+数字 ,通常用于匹配不同位置相同部分的子串。...“对于正则表达式的直接量, ECMAscript 3规定在每次它时都会返回同一个RegExp对象, 因此用直接量创建的正则表达式的会共享一个实例....假设正则表达式对象为 reg , 检测的字符为 string , reg.exec(string) 返回值为 array.

    1.8K20

    代码之美,正则之道

    上述[[:xxxx:]] 形式的正则表达式, 是php中内置的通用字符簇, js中并不支持. linux/osx下常用命令与正则表达式的关系 我曾经尝试在 grep 和 sed 命令中书写正则表达式,...则表示要使用 “EREs” egrep 指令后跟 “-P” 参数, 则表示要使用 “PREs” 3. sed 支持: BREs、EREs sed 指令默认是使用 “BREs” sed 指令后跟 “-r.../[0-9]/g; 以上, 通过对象字面量和构造函数创建正则表达式, 有个小插曲....“对于正则表达式的直接量, ECMAscript 3规定在每次它时都会返回同一个RegExp对象, 因此用直接量创建的正则表达式的会共享一个实例....假设正则表达式对象为 reg , 检测的字符为 string , reg.exec(string) 返回值为 array.

    1.3K30

    为你的Go应用创建轻量级Docker镜像?

    介绍 多阶段允许在创建Dockerfile时使用多个from,它非常有用,因为它使我们能够使用所有必需的工具构建应用程序。...举个例子,首先我们使用Golang的基础镜像,然后在第二阶段的时候使用构建好的镜像的二进制文件,最后阶段构建出来的镜像用于发布到我们自己的仓库或者是用于上线发布。...} 编译阶段 Dockerfile [root@rabbitmq-2 gin_app]# cat Dockerfile FROM golang:alpine AS build # 为我们的镜像设置必要的环境变量...生产阶段 [root@rabbitmq-2 gin_app]# cat Dockerfile FROM golang:alpine AS build # 为我们的镜像设置必要的环境变量 ENV GO111MODULE...app RUN go build -ldflags "-s -w" -o app . ################### # 接下来创建一个小镜像 ################### FROM

    72961

    Linux进阶 03 文本处理三驾马车

    先记录下来以后要多看看~1 grep1.1 定义grep是一种强大的文本搜索工具,它能使用正则表达式匹配模式搜索文本,并把匹配的行打印出来1.2 格式grep options pattern file1.3...,可以先把需要查询的几个关键词写入一个文档,然后使用grep -f参数进行文档中的关键词查询1.4 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符及这些特定字符的组合,组成一个“...s)2.3 常见参数-n:禁止显示所有输入内容,只显示经过sed处理的行(常用)-e:直接在命令模式上进行sed的动作编辑,接要执行的一个或多个命令-f:执行含有sed动作的文件-r:sed的动作支持的扩展正则...:表示否定,取反'2!'...SeparatorOFS:定义输出字段分隔符ORS:定义输出记录分隔符NF:数据文件中的字段总数,可以简单理解为列数NR:已处理的输入记录数,可以简单理解为行数如何确定是空格还是tab键 cat -A3.4

    18920

    【NodeJS】为基于Express框架创建的Node后台配置路由

    此文章是这个系列的第二篇文章,我们在上文的基础上为我们的NodeJS后台项目配上路由,便于我们的代码组织。...写在前面 上一篇文章中我们初始化了一个基于Express框架的NodeJS后台,但是里面的代码全都在index.js文件中,所以这一篇文章就给大家介绍下如何去组织node后台的代码编写,也就是我们说的给它配置个路由...,代码也能生效,是因为我们用了上文介绍的supervisor这个插件,它会自动监听代码文件的变化并重启后台程序。...3、为了代码的整洁,我们将index.js中的关于主路由,即localhost:3001/的代码也单独存放在一个路由文件中。...,如下: 总结 这篇文章介绍了如何为我们创建的node后台配置路由信息,通俗点说,就是为了更好地组织后台中的代码,我是这么理解的。

    1.4K10

    直接为CellPhoneDB创建一个独立的conda环境

    CellPhoneDB是出镜率最高的细胞通讯分析软件,在试图学习这个细胞通讯分析方法之前,大家需要自己提前了解一下:细胞通讯分析的背景知识,而且呢,还得看看细胞通讯分析的实例,多读文献,比如:细胞通讯分析结果的解读...主要是数据库资源的收集和人工整理,数据库构建时考虑了每种细胞类型中配体和受体的表达水平,并凭借经验计算配体-受体关系对的细胞类型特异性,这种预测到的细胞群之间的分子相互作用是通过特定的蛋白质复合物实现的...,但是Python本身这个语言比较奇葩,对初学者来说各种版本冲突很膈应人,所以直接为CellPhoneDB创建一个独立的conda环境,是一个比较好的解决方案,如下所示: # 创建名为cellphonedb...如果你确实觉得我的教程对你的科研课题有帮助,让你茅塞顿开,或者说你的课题大量使用我的技能,烦请日后在发表自己的成果的时候,加上一个简短的致谢,如下所示: We thank Dr.Jianming Zeng...十年后我环游世界各地的高校以及科研院所(当然包括中国大陆)的时候,如果有这样的情谊,我会优先见你。

    2.8K30

    shell脚本扩展「建议收藏」

    vim、grep、find、awk、sed等命令都支持正则表达式。...应用 ‘[^g]oo’ 作搜索字符串,^符号如果出现在[]的起始位置表示否定,但是在[]的其他位置是普通字符。...A 使用sed命令行格式为: sed [选项] sed命令 输入文件。 记住在命令行使用sed命令时,实际命令要加单引号。sed也允许加双引号。...B、使用sed脚本文件,格式为: sed [选项] -f sed脚本文件 输入文件 C、要使用第一行具有sed命令解释器的sed脚本文件,其格式为: sed脚本文件 [选项] 输入文件 不管是使用shell...sed选项如下: -f, –filer=script-file 引导sed脚本文件名 综合举例: 通过sed脚本对test.txt进行处理,test.txt文件内容如下: 创建sed脚本文件append.sed

    5.8K20

    任督二脉之Shell中的正则表达式cut命令awk命令sed命令sort命令wc命令

    Shell的基础学习之前已经总结了一篇博客:http://www.cnblogs.com/jyzhao/p/4485553.html 本文将总结Shell中的正则表达式及常用的字符处理命令,为打通任督二脉奠定基础...基础正则表达式举例说明 字符截取命令 cut命令 awk命令 sed命令 字符处理命令 sort命令 wc命令 1. 基础正则表达式举例说明 *,....例7:截取出系统根目录的磁盘空间使用率 df -h | awk '{print $5}'|cut -f 1 -d "%" sed命令 sed可以将数据进行替换、删除、新增、选取特定行。...-n 只有经过sed处理的才显示(默认显示全部) -e 直接在命令行模式上进行sed的动作编辑 -f 将sed的动作写入一个文件,然后-f filename执行filename中的sed命令 -r 支持扩展型正则表达式语法...(默认是基础正则表达式语法) -i 直接修改读取的文件内容,而不是默认的屏幕输出结果 例8:显示行号并打印出/etc/hosts,删除文件的前两行。

    1.2K40

    为什么要创建以开发人员为中心的 Kubernetes 平台,以及如何创建

    为什么要创建以开发人员为中心的 Kubernetes 平台,以及如何创建 翻译自 Why Create a Developer-Focused Kubernetes Platform and How 。...考虑到这一点,让我们看看为什么创建一个以开发人员为中心的 Kubernetes 平台是有意义的,然后探索构建它需要哪些组件。...如何创建以开发人员为中心的 Kubernetes 平台 没有一种通用的开发者平台,这为铺设实现组织所需的开发者平台之路留下了空间。开发人员需要知道什么才能安全地发布软件,平台又将如何帮助他们实现?...有效面向开发者的 Kubernetes 平台需要考虑以下关键因素: 支持开发人员自助服务和可见性。为完成工作所需的工具和可见性创建基线,并建立灵活性以确保没有人被锁定。...许多组织已经投资于开发人员平台,为开发人员责任的这些新元素创建无摩擦路径,将其缩减为“需要知道”的基本要素,将其从开发人员不关心(或不需要关心)的复杂功能中抽象出来。

    10010
    领券