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

删除文件中匹配一个字符串但不匹配另一个字符串的行 - SED,BASH?

删除文件中匹配一个字符串但不匹配另一个字符串的行可以使用SED和BASH来实现。

SED是一种流编辑器,可以用于对文本进行处理和转换。在这个场景中,可以使用SED的正则表达式功能来匹配和删除符合条件的行。

BASH是一种Unix shell和命令语言,可以用于编写脚本。在这个场景中,可以使用BASH的文本处理功能和条件语句来实现对文件的处理。

以下是使用SED和BASH来删除文件中匹配一个字符串但不匹配另一个字符串的行的示例:

使用SED的命令行方式:

代码语言:txt
复制
sed '/pattern1/{/pattern2/!d}' file.txt

这个命令会删除文件file.txt中匹配字符串pattern1但不匹配字符串pattern2的行。

使用BASH的脚本方式:

代码语言:bash
复制
#!/bin/bash

while IFS= read -r line; do
    if [[ $line =~ pattern1 && ! $line =~ pattern2 ]]; then
        continue
    fi
    echo "$line"
done < file.txt

这个脚本会逐行读取文件file.txt,如果某一行匹配字符串pattern1但不匹配字符串pattern2,则跳过该行,否则输出该行。

以上是使用SED和BASH来删除文件中匹配一个字符串但不匹配另一个字符串的行的方法。这些方法适用于各种文本处理场景,例如日志分析、数据清洗等。

腾讯云相关产品和产品介绍链接地址:

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

相关·内容

找出字符串一个匹配下标

给你两个字符串 haystack 和 needle ,请你在 haystack 字符串找出 needle 字符串一个匹配下标(下标从 0 开始)。...如果 needle 不是 haystack 一部分,则返回  -1 。...示例 1: 输入:haystack = "sadbutsad", needle = "sad" 输出:0 解释:"sad" 在下标 0 和 6 处匹配。 第一个匹配下标是 0 ,所以返回 0 。...提示: 1 <= haystack.length, needle.length <= 104 haystack 和 needle 仅由小写英文字符组成 我们可以让字符串字符串 所有长度为 子串均匹配一次...为了减少不必要匹配,我们每次匹配失败即立刻停止当前子串匹配,对下一个子串继续匹配。如果当前子串匹配成功,我们返回当前子串开始位置即可。如果所有子串都匹配失败,则返回 −1。

33120
  • Linux常用命令09 - sed

    在处理文本文件时,通常需要在一个或多个文件查找和替换文本字符串sed一个流编辑器。 它可以对文件和输入流(如管道)执行基本文本操作。...使用 sed,您可以搜索、查找和替换、插入和删除单词和。 它支持基本和扩展正则表达式,允许您匹配复杂模式。 接下来, 我将使用 sed 查找和替换字符串。...正如您可能已经注意到,在前面的示例,foobar 字符串字符串 foo 也被替换了。 如果这不是想要行为,请在搜索字符串两端使用单词边界表达式(\b)。 这将确保部分词不匹配。...例如,用/usr/bin/zsh 替换/bin/bash sed -i '' 's/\/bin\/bash/\/usr\/bin\/zsh/g' file.txt 更简单和更易读选项是使用另一个分隔符字符...bin/bash demo foobar number sed 另一个有用特性是,您可以使用与匹配模式相对应 & 符号。

    2.1K30

    Sed三剑客入门与进阶

    ,处理完成后把缓冲区内容送往屏幕,接着处理下一这样不断重复直到文件末尾; 保持空间(hold space) :是sed另外一个缓冲区,用来存放临时数据,sed可以交换保持空间与模式空间数据,但不能在保持空间上执行普通...w 表示把写入一个文件。 x 表示互换模板块文本和缓冲区文本。...y 表示把一个字符翻译为另外字符(但是不用于正则表达式) \1 子串匹配标记 & 已匹配字符串标记 sed元字符集-即正则表达式 ^ 匹配开始,如:/^sed/匹配所有以sed开头。...book字符串换成books $ sed '3s/60/90/' file.txt # 将text.txt第三得60换成90; #直接编辑文件-i选项,会匹配file文件每一book替换为books...从文件读入:r命令 描述:file里内容被读进来,显示在与test匹配后面,如果匹配多行,则file内容将显示在所有匹配下面 #示例1.读取file文件到并且插入到查找到test字符串后面

    3.1K10

    linux实战(一)

    实例 删除d命令 $ sed '2d' example 删除example文件第二。 $ sed '2,$d' example 删除example文件第二到末尾所有。...$ sed '$d' example 删除example文件最后一。 $ sed '/test/'d example 删除example文件所有包含test。...保持和获取h命令和G命令 $ sed -e '/test/h' -e '$G example 在sed处理文件时候,每一都被保存在一个叫模式空间临时缓冲区,除非行被删除或者输出被取消,否则所有被处理行都将打印在屏幕上...\> 匹配一个单词末尾字符串,锚定末尾。 \w 匹配一个字母数字组成单词。 \W 匹配一个非字母数字组成单词。 \‘ 匹配字符串开头一个字符串。...\' 匹配字符串末尾一个字符串

    2.2K10

    Shell 编程(五):文本三剑客之 Sed

    能够根据命令来处理数据流数据,这些命令要么从命令行输入,要么存储在一个命令文本文件。...sed 编辑命令详解 类别 编辑命令 含义 查询 p 打印 增加 a 后追加 增加 i 行前追加 增加 r 外部文件读入,后追加 增加 w 匹配写入外部文件 删除 d 删除 修改 s/old/...Copy 打印 /etc/passwd 一个包含 /bin/bash 内容开始,到第 5 结束内容 > sed -n '/\/bin\/bash/,5p' /etc/passwd root...Copy 利用 sed 删除特定内容 查询命令 含义 1d 删除第 1 行内容 1,10d 删除 1 到 10 内容 1,+5d 删除 1 到 6 内容 /pattern1/d 删除每行匹配到...到 10 所有行内容 10,/pattern1/d 删除第 10 直到匹配到 pattern1 所有行内容 例子 删除配置文件 /etc/nginx 所有注释和空行 > sed -

    22230

    Linux文本处理工具浅谈-awk sed grep

    #指令放在文件sed-command a 追加 i 插入 d 删除 c 替换指定 s 替换每一匹配一个字符 g 替换每一全部 p 输出 w...另存文件 e 执行bash命令 q 不继续往下读取 概括流程:Sed软件从文件或管道读取一,处理一,输出一;再读取一,再处理一,再输出一…… 增删改查 a 追加文本到指定后 i...:打印文件内容但不包含oldboy sed '/oldboy/d' person.txt #删除包含"oldboy" 改 按替换 c 用新取代旧 sed...功能可以记住正则表达式一部分,其中,\1为第一个记住模式即第一个小括号匹配内容,\2第二记住模式,即第二个小括号匹配内容,sed最多可以记住9个。...*am□ –>这句意思是以任意字符开头到am□为止,匹配文件I am□字符串; \([a-z].*\)□–>这句外壳就是括号\(\),里面的[a-z]表示匹配26个字母任何一个,[a-z].

    3.6K41

    【建议收藏系列】爆肝3w字带你理解什么叫运维~

    exit 1 fi exit 0 上例read命令作用是等待用户输入一字符串,将该字符串存到一个Shell变量。...正则表达式 以前我们用grep在一个文件找出包含某些字符串,比如在头文件找出一个宏定义。其实grep还可以找出符合某个模式(Pattern)一类字符串。...]可以匹配一位十六进制数字 ^ 位于[]括号内开头,匹配除括号字符之外任意一个字符 [^xy]匹配除xy之外任一字符,因此[^xy]1可以匹配a1、b1但不匹配x1、y1 [[:xxx...常用sed命令 /pattern/p 打印匹配pattern /pattern/d 删除匹配pattern /pattern/s/pattern1/pattern2/ 查找符合pattern...注意,sed命令不会修改原文件删除命令只表示某些不打印输出,而不是从原文件删去。

    2.1K30

    Shell 编程(五):文本三剑客之 sed

    能够根据命令来处理数据流数据,这些命令要么从命令行输入,要么存储在一个命令文本文件。...sed 选项 选项 含义 -n 只打印模式匹配 -e 直接在命令行进行sed编辑【默认选项】 -f 编辑动作保存在文件,指定文件执行 -r 支持 扩展正则表达式 -i 直接修改文件内容 例子 匹配全部...a 后追加 增加 i 行前追加 增加 r 外部文件读入,后追加 增加 w 匹配写入外部文件 删除 d 删除 修改 s/old/new 将行内第一个old替换为new 修改 s/old/new/...10 所有行内容 10,/pattern1/d 删除第 10 直到匹配到 pattern1 所有行内容 例子 删除配置文件 /etc/nginx 所有注释和空行 > sed -i '/...w 将匹配写入指定文件 passwd 文件匹配到 /bin/bash 后面追加 “Insert Line For /bin/bash Behind” > sed -i '/\/bin\/bash

    79610

    Linux(八)

    匹配除换行符之外任意字符 \w 匹配字母,数字,下划线或汉字 \s 匹配任意空白字符 \d 匹配数字 \ 将下一个字符标记为一个特殊字符、或一个原义字符 ^ 匹配输入字符串开始位置 $ 匹配输入字符串结束位置...非贪婪模式尽可能少匹配所搜索字符串,而默认贪婪模式则尽可能多匹配所搜索字符串 [xyz] 字符集合(character class),匹配所包含任意一个字符 [^xyz] 排除型(negate...模式空间和缓冲空间 模式空间: 处理文件中一内容临时缓冲区,处理完这一会将这一输出标准输出并清空缓冲区 缓存空间: 另一个缓冲区,不会自动清空也不会主动打印,是 sed 辅助空间 查找 格式为...d' source.txt # 删除评论 $sed '/^#/d' source.txt 注意: 删除并不会影响源文件,如果也想修改源文件,可以使用 -i 参数或重定向 Mac 下需要使用 -i...awk awk 是贝尔实验室 1977 年开发用于处理文本文件一个应用程序,它依次处理文件每一,并读取里面的每一个字段。

    1.5K10

    shell_正则_变量_tr_awk_sed_cut(1)

    vim几种常见模式 命令模式: 以vi打开一个文件就直接进入一般模式了(这是默认模式)。...输入模式: 在命令模式可以进行删除、复制、粘贴等操作,但是却无法编辑文件内容,只有当到你按下【i, I, o, O, a, A, r, R】等任何一个字母之后才会进入输入模式。...】三个任何一个,就可以将光标移动到最底下那一。在这个模式, 可以提供查找、读取、存盘、替换字符、离开vi、显示行号等动作则是在此模式完成!...搜索/etc/passwd,找到root对应,执行后面花括号一组命令,每个命令之间用分号分隔,这里把bash替换为blueshell,再输出这行: nl /etc/passwd | sed...-e表示多点编辑,第一个编辑命令删除/etc/passwd第三到末尾数据,第二条命令搜索bash替换为blueshell。

    1.1K20

    文本三剑客

    ‐n :只打印模式匹配 ‐e :直接在命令行模式上进行sed动作编辑,此为默认选项 ‐f :将sed动作写在一个文件内,用–f filename 执行filename内sed动作 ‐r :支持扩展表达式...动作说明 常用选项: p:打印匹配(‐n) =:显示文件行号 a\:指定行号后添加新文本 i\:指定行号前添加新文本 d:删除定位 c\:用新文本替换定位文本 w filename:写文本到一个文件...r filename:从另一个文件读文本 s///:替换 替换标记: g:行内全局替换 p:显示替换成功 w:将替换成功结果保存至指定文件 q:第一个模式匹配后立即退出 {}:在定位执行命令组...1:1:bin:/bin:/sbin/nologin -e表示多点编辑,第一个编辑命令删除/etc/passwd第三到末尾数据,第二条命令搜索bash替换为 blueshell。...awk语言最基本功能是在文件或者字符串基于指定规则浏览和抽取信息,awk抽取信息后,才能进 其他文本操作。完整awk脚本通常用来格式化文本文件信息。

    2.4K10

    一文掌握shell脚本基本语法

    1.测试通配符 2.通配符,在正则表达式中表示一个字符,也可以用来匹配单个字符。 在表达式测试一个条件结果,类似C语言中三元操作符。 $ 1.引用变量 2.正则表达式,表示结束符。...一个函数可以嵌套另一个函数。 不用在函数中指明参数,只需在调用时传递参数即可。 10.2 函数调用 在shell,调用函数时可直接使用名字即可。如果有参数,设置即可。...|显示文件匹配字符文件名|| [grep显示存在字符文件名.png] |-n|--line-number|打印字符匹配所在|| [grep打印pattern所在.png] |-o|--only-matching...# 将文件中空格全部换行(\n) sed "/\//d" helloworld.sh # 将文件 /所在直接删除(也就是#!.../bin/bash) 16.3 注释 # 全局删除 sed "/^#\|^$\| *#/d" checkpip_deps.sh # 将文件中注释直接全部删除 16.4 查看指定范围内容

    4K01

    常用 linux 命令集锦

    mkdir test -----建立一个test文件夹 open test -----打开test文件夹 rm test ----- 删除test文件 rm -r test -----删除test文件夹...options可选参数: -i :忽略大小写 -c :打印匹配行数 -l :从多个文件查找包含匹配项 -v :查找不包含匹配 -n:打印包含匹配标 正则表达式参数...替换字符串?' 4. 可以在末尾加g替换每一个匹配关键字,否则只替换每行一个,例如: # 替换所有匹配关键字 sed 's/原字符串/替换字符串/g' 5....# 替换文件所有匹配sed -i 's/原字符串/替换字符串/g' filename 8....关系表达式:可以用下面运算符表关系运算符进行操作,可以是字符串或数字比较,如$2>%1选择第二个字段比第一个字段长。 模式匹配表达式:用运算符~(匹配)和~!(不匹配)。

    4.5K10

    linux中最为常用三大文本(grep,sed,awk)处理工具

    默认不会直接修改源文件数据,而是会将数据复制到缓冲区,修改也仅限于缓冲区数据 3. sed 与 vi 区别 vi 采用是交互式文本编辑模式,你可以用键盘命令来交互性地插入、删除或替换数据文本...] sed ‘s/old/new/’ test 匹配每一一个old替换为new sed 编辑器只替换每行第 2 次出现匹配模式 root@ubuntu-admin-a1:/home/sedTest...反选,打印没有匹配到 hani sed -n ‘s/old/new/gp’ test 只打印匹配替换 6.7 sed w 将所选写入文件 w 命令用来将文本中指定内容写入文件 格式如下...-A  n:显示匹配字符串所在及其后n,after   -B  n:显示匹配字符串所在及其前n,before   -C  n:显示匹配字符串所在及其前后各n,context...模式部分:   1、直接输入要匹配字符串,这个可以用fgrep(fast grep)代替来提高查找速度,比如我要匹配一下hello.c文件printf个数:grep  -c  "printf"

    6K10

    Linux入门学习笔记二

    ,grep和sed区别在于,grep是以行为单位,进行字符串对比,sed则可以进行删除、替换等更多功能 语法:grep [-n] [-A] [-B] [--color==auto] '搜索字符串...但如果加上 -n 参数后,则只有经过sed 特殊处理那一(或者动作)才会被列出来 -f,–file=script-file 以选项中指定script文件来处理输入文本文件。...' test.txt ##在文件ab中最后一直接输入"bye" 查询 sed -n '/关键字/p' test.txt 删除匹配 sed -i '/匹配字符串/d' filename (注:...记得好像是) 替换匹配某个字符串 sed -i '/匹配字符串/s/替换源字符串/替换目标字符串/g' filename awk AWK是一种处理文本文件语言,是一个强大文本分析工具。...print还可以打印自定义内容,但是自定义内容要用双引号括起来 匹配 # 以冒号分隔,让第一个字符段匹配有123awk -F ':' '$1 ~/123/' test.txt # 多次匹配awk

    86610

    生信人自我修养:Linux 命令速查手册(全文引用)

    bash run.sh & disown -r # 从当前shell移除运行作业,至此,可以关掉终端回家了 | - 管道 管道,将前一个命令输出作为后一个命令输入 command1 | command2...' file # 删除第10到20之间 sed '/pattern/d' # 删除匹配pattern sed '/^\s*$/d' file # 删除空白 sed 's/^\s*//'...' file1 # 将匹配写入file2 awk Awk 是一个强大文本分析工具,它每次读入一条记录,并把每条记录切分成字段后进行分析。...,通常测试一个记录、字段或字符串是否与一个正则表达式匹配匹配返回 1,不匹配返回 0。...expr ~ /r/ # 评估expr是否与r匹配匹配意思是expr一个子串是否在正则表达式r定义字符串集中。

    3.9K40
    领券