首页
学习
活动
专区
圈层
工具
发布

(转载)Linux之sed匹配第N个进行替换

第二个句子是通过循环把文本全部读进pattern space 然后只替换第一个。 替换第N[3]个88为--: sed '/88/{x;s/^/./;/^\.\{3\}$/{x;s/....第二个命令和上面第一个其实是一样的原理,全部读入文本后统一替换第3个匹配的内容。 替换最后一个匹配的88为--: sed ':a;/\n88/!....*\)88/\1--/' file [解析] 第一个命令,没匹配到 /\n88/ 的内容就读取下一行,然后 ba 跳转去开始处,如果读取到88的行呢,就执行后面的 P;D 组合,D也有循环功能,一直把匹配...\n88 内容的第一行打印,删除,直到不匹配/\n88/(因为换行符已经被打印出去了,所以不再会匹配到 \n88),这时候才继续往下读,如果又读到88的行,那么又执行P;D循环,同上操作。...» 本文链接:(转载)Linux之sed匹配第N个进行替换 » 转载请注明来源:刺客博客

10.3K40

Excel公式技巧65:获取第n个匹配的值(使用VLOOKUP函数)

学习Excel技术,关注微信公众号: excelperfect 在查找相匹配的值时,如果存在重复值,而我们想要获取指定的匹配值,那该如何实现呢?...如下图1所示的工作表,在“商品”列中,存在一些重复的商品,现在我们要找出第2次出现的“笔记本”的销售量。 ?...图1 我们知道VLOOKUP函数通常会返回找到的第一个匹配值,或者最后一个匹配值,详见《Excel公式技巧62:查找第一个和最后一个匹配的数据》。...然而,我们可以构造一个与商品相关的具有唯一值的辅助列(详见《Excel公式技巧64:为重复值构造包含唯一值的辅助列》),从而可以使用VLOOKUP函数来实现查找匹配值。...在单元格H6中输入公式: =VLOOKUP(H2 & "-" &G6,B3:E 即可得到指定的匹配值,如下图3所示。 ? 图3 可以修改单元格H2或G6中的数值,从而获取相应匹配的数据。

10K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Excel公式技巧66:获取第n个匹配的值(使用INDEX函数)

    学习Excel技术,关注微信公众号: excelperfect 在《Excel公式技巧65:获取第n个匹配的值(使用VLOOKUP函数)》中,我们构造了一个没有重复值的辅助列,从而可以使用VLOOKUP...如下图1所示的工作表,在“商品”列中,存在一些重复的商品,现在我们要找出第2次出现的“笔记本”的销售量。 ?...图2 公式中: C3:C14=G2 将单元格区域C3:C14中的值与单元格G2中的值相比较,得到由布尔值组成的数组: {TRUE;FALSE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE...如果使用定义的名称,那么公式将更灵活,如下图3所示。 ? 图3 欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。 欢迎到知识星球:完美Excel社群,进行技术交流和提问,获取更多电子资料。

    9K10

    shell脚本–sed的用法

    sed ‘s/^/#&/g’ 1.txt #在1.txt文件中的每一行开头加一个# sed ‘s/123/hello/’ 1.txt #将文件中的123替换为hello,默认只替换每行第一个...123 sed ‘s/123/hello/g’ 1.txt #将文本中所有的123都替换为hello sed ‘s/123/hello/2’ 1.txt #将每行中第二个匹配的123替换为...1.txt #打印1到3行 sed -n ‘3,$p’ 1.txt #打印从第3行到最后一行的内容 sed -n ‘/you/p’ 1.txt #逐行读取文件,打印匹配you的行...sed -n ‘/bob/,3p’ 1.txt #逐行读取文件,打印从匹配bob的行到第3行的内容 sed -n ‘/you/,3p’ 1.txt #打印匹配you 的行到第3行,也打印后面所有匹配...2.txt sed -n -e ‘1w 2.txt’ -e ‘$w 2.txt’ 1.txt #将1.txt的第1行和最后一行内容写入2.txt sed -n -e ‘1w 2.txt

    4.9K20

    Linux Shell工具篇 - 内容处理工具sed

    将文本中所有的itheima都替换为hello,全局替换: sed 's/itheima/hello/g' sed.txt # g 代表匹配全局所有符合的字符 3.5 将每行中第二个匹配替换...将每行中第二个匹配的itheima替换为hello: sed 's/itheima/hello/2' sex.txt 运行效果 3.6 替换后的内容写入文件 将每行中第二个匹配的itheima...替换为hello , 将替换后的内容写入到sed2.txt文件中 # 第一种方式 sed -n 's/itheima/hello/2pw sed2.txt' sed.txt # w写入 # p打印,...-n只是获取 # 第二种方式 sed -n 's/itheima/hello/2p ' sed.txt > sed2.txt 运行效果 3.7 正则表达式匹配替换 匹配有 i 的行,替换匹配行中...sshd的进程信息: ps -aux | sed -n '/sshd/p' 运行效果 5.多个sed程序命令执行 将sed.txt文件中的第1行删除并将 itheima 替换为 itcast # 第一种方式

    2.5K20

    shell脚本快速入门之-----正则三剑客之二sed用法大全!!!

    the 的行 [root@localhost ~]# sed -n '4,/the/p' test.txt //输出从第 4 行至第一个包含 the 的行 [root@localhost ~]# sed...sed 's/the/THE/' test.txt //将每行中的第一个the 替换为 THE sed 's/l/L/2' test.txt //将每行中的第 2 个 l 替换为 L sed 's/the.../THE/g' test.txt //将文件中的所有the 替换为 THE sed 's/o//g' test.txt //将文件中的所有o 删除(替换为空串) sed 's/^/#/' test.txt...'3,5s/the/THE/g' test.txt //将第 3~5 行中的所有 the 替换为 THE sed '/the/s/o/O/g' test.txt //将包含the 的所有行中的 o 都替换为...sed '3aNew' test.txt //在第 3 行后插入一个新行,内容为New sed '/the/aNew' test.txt //在包含the 的每行后插入一个新行,内容为 New sed

    2.4K31

    Linux中sed命令简单介绍

    -e :直接在命令行模式上进行sed动作编辑,此为默认选项; -f :将sed的动作写在一个文件内,用–f filename 执行filename内的sed动作; -i :直接修改文件内容; -n...当使用 g 时,它会替换行中的所有匹配项; sed实战: 查询(p/n命令) cat 1.txt 1 2 3 4 5 6 7 8 9 10 // 查询第8行数据 sed '8p' 1.txt ('8p...,8p'表示只查询第8行数据) 8 // 只查询第2~5行数据 sed -n '2,5p' 1.txt ('2,5p'表示第2~5行) 2 3 4 5 // 只查询第2行、第5行数据 sed -n...g'表示全局匹配) aaa 22a 33a 44a 55a a00a // 将第2行改成'22222221' sed '2s/.*/22222221/g' 1.txt ('....c 5 d // 删除每行行尾的空格 sed 's/ \+$//' 1.txt // 将多个空格替换为单个空格 (sort排序前的操作,为了保证sort排序,还要去除每行首行的空格) sed 's

    2.7K10

    【linux命令讲解大全】081.sed:功能强大的流式文本编辑器

    x{m,n} # 重复字符x,至少m次,不多于n次,如:/0{5,10}/匹配5~10个0的行。...: sed 's/book/books/g' file 当需要从第N处匹配开始替换时,可以使用 /Ng: echo sksksksksksk | sed 's/sk/SK/2g' skSKSKSKSKSK.../nologin 选定行的范围:,(逗号) 所有在模板test和check所确定的范围内的行都被打印: sed -n '/test/,/check/p' file 打印从第5行开始到第一个包含以test...ba 是如果没有到第六行就跳转到a继续循环 下一个:n命令 如果test被匹配,则移动到匹配行的下一行,替换这一行的aa,变为bb,并打印该行,然后继续: sed '/test/{ n; s/aa/bb...sed -e '/test/h' -e '$G' file 在这个例子里,匹配test的行被找到后,将存入模式空间,h命令将其复制并存入一个称为保持缓存区的特殊缓冲区内。

    1.1K10

    Linux中sed工具的使用

    只显示发生了改变的行 sed -n '/root/ROOT/p' /etc/passwd 查看指定行或指定几行 查看第10行的内容 sed -n '10p' /etc/passwd 查看...5-10行的内容 sed -n '5,10p' /etc/passwd 以字符为单位的替换 02 将文件中的root替换为ROOT,只替换每行的第一个 sed 's/root/ROOT.../' /etc/passwd 将文件中的所有root替换为ROOT sed 's/root/ROOT/g' /etc/passwd 将文件中每行的第2个root开始替换为ROOT sed 's/root...,这里把bash替换为nologin 这里会找到所有含有root的行,然后将第一个root换成ROOT sed-n '/root/{s/bash/ROOT/p}' /etc/passwd 如果要将所有的...从文件读入:r 命令 08 file里的内容被读进来,显示在与test匹配的行后面,如果匹配多行,则file的内容将显示在所有匹配行的下面: sed '/test/r file' filename 写入文件

    3K10

    Shell实用工具

    演示4: 将文件中的itheima替换为hello 将文件中的itheima替换为hello,默认只替换每行第一个itheima sed 's/itheima/hello/' sed.txt ?...注意 's/itheima/hello/' 最后一个/ 不可少 将文本中所有的itheima都替换为hello, 全局替换 sed 's/itheima/hello/g' sed.txt # g 代表匹配全局所有符合的字符...演示5: 将每行中第二个匹配替换 将每行中第二个匹配的itheima替换为hello 命令 sed 's/itheima/hello/2' sex.txt ?...演示6: 替换后的内容写入文件 将每行中第二个匹配的itheima替换为hello , 将替换后的内容写入到sed2.txt文件中 # 第一种方式 sed -n 's/itheima/hello/2pw...示例: 多个sed程序命令执行 将sed.txt文件中的第1行删除并将 itheima 替换为 itcast # 第一种方式, 多个sed程序命令 在每个命令之前使用 -e 参数 sed -e '1d'

    10.1K10

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

    ,到匹配到pettern1的行结束 /pattern1/, 10command 匹配到pattern1的行开始,到第10行匹配结束 例子 直接打印第 10 行 > sed -n '10p' passwd...a 行后追加 增加 i 行前追加 增加 r 外部文件读入,行后追加 增加 w 匹配行写入外部文件 删除 d 删除 修改 s/old/new 将行内第一个old替换为new 修改 s/old/new/...g 将行内全部的old替换为new 修改 s/old/new/2 将行内第2个开始的old替换为new 修改 s/old/new/ig 将行内olg全部替换为new,忽略大小写 例子 删除 /sbin...passwd 中从匹配到以 root 开头的行,到第 15 行中的所有行,修改内容为将这些行中的 nologin 修改为 SPARK > sed -i '/^root/,15s/nologin/SPARK...文件中特定行后面,匹配以 ftp 开头的行,到第 18 行的所有行 > sed -i '/^ftp/,18r /etc/vconsole.conf' passwd > cat passwd 将 passwd

    1.2K10

    Linux生产环境上,最常用的一套“Sed“技巧

    你的输出将覆盖原文件。非常危险,一定要注意。 范围 1,4 表示找到文件中1,2,3,4行的内容。 这个范围的指定很有灵性,请看以下示例(请自行替换图中的范围部分)。 5 选择第5行。...g 默认只匹配行中第一次出现的内容,加上g,就可以全文替换了。常用。 p 当使用了-n参数,p将仅输出匹配行内容。 w 和上面的w模式类似,但是它仅仅输出有变换的行。...e 表示将输出的每一行,执行一个命令。不建议使用,可以使用xargs配合完成这种功能。...0个或者1个匹配 {m} 前面的匹配重复m次 {m,n} 前面的匹配重复m到n次 \ 转义字符 [0-9] 匹配括号中的任何一个字符,or的作用 | or,或者 \b 匹配一个单词。...find ./ -name "*.py" | xargs sed -i.bak '/^[ ]*#/d' 查看第5-7行和10-13行 sed -n -e '5,7p' -e '10,13p' file

    1.3K30

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

    /, 10command 匹配到pattern1的行开始,到第10行匹配结束 例子 直接打印第 10 行 > sed -n '10p' passwd operator:x:11:0:operator...编辑命令 含义 查询 p 打印 增加 a 行后追加 增加 i 行前追加 增加 r 外部文件读入,行后追加 增加 w 匹配行写入外部文件 删除 d 删除 修改 s/old/new 将行内第一个old替换为...new 修改 s/old/new/ g 将行内全部的old替换为new 修改 s/old/new/2 将行内第2个开始的old替换为new 修改 s/old/new/ig 将行内olg全部替换为new,.../new/ 替换第 10 行直到匹配到 pattern1 的所有行内容 old 为 new 例子 修改 /etc/passwd 中第 1 行中第 1 个 root 为 ROOT > sed -i '1s...修改 /etc/passwd 中从匹配到以 root 开头的行,到第 15 行中的所有行,修改内容为将这些行中的 nologin 修改为 SPARK > sed -i '/^root/,15s/nologin

    61630

    Sed 命令

    2-4行内容sed -n '2,4p' a.txttwothreefour#打印文件第9行到最后一行内容sed -n '9,$p' a.txtnineteneleventwelve#打印第1行及其后3行内容...sed '/^t/,/^e/d' a.txtonenine五、替换操作1.替换指定字符串#将root字符替换成123,默认替换匹配的第1个字符sed -n 's/root/123/p' passwd123...:x:0:0:root:/root:/bin/bashoperator:x:11:0:operator:/123:/sbin/nologin#加上数字2,替换匹配到的第2个字符sed -n 's/root...n 替换为 1;将 e 替换为 2sed 'y/ne/12/' a.txto12twothr22fourfiv2sixs2v212ight1i12t212l2v21tw2lv2六、在文件中插入内容1.在指定行下面插入内容...P;D' file二 匹配到字符串所在的行的上一行或者是下一行插入一条数据a 追加内容 sed ‘/匹配词/a\要加入的内容’ example.file(将内容追加到匹配的目标行的下一行位置)i 插入内容

    1.7K10

    Linux如何通过命令查看日志文件的某几行(中间几行或最后几行)「建议收藏」

    head -n 1000:显示前面1000行 【三】用sed命令 sed -n ‘5,10p’ filename 这样你就可以只查看文件的第5行到第10行。...对所选行以外的所有行应用命令 s 用一个字符串替换另一个 g 在行内进行全局替换 w 将所选的行写入文件 x 交换暂存缓冲区与模式空间的内容 y 将字符替换为另一字符(不能对正则表达式使用...最多可以定义9个标签,从左边开始编号,最左边的是第一个。此例中,对第1到第20行进行处理,you被保存为标签1,如果发现youself,则替换为your。...9\{5\}/ 匹配包含连续5个9的行 x\{m,\} 至少m个x /9\{5,\}/ 匹配包含至少连续5个9的行 x\{m,n\} 至少m个,但不超过n个x /9\{5,7\}/ 匹配包含连续...sed -n ‘1,20s/My$/You/gp’ datafile #取消默认输出,处理1到20行里匹配以My结尾的行,把行内所有的My替换为You,并打印到屏幕上。

    12.2K60
    领券