第二个句子是通过循环把文本全部读进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个进行替换 » 转载请注明来源:刺客博客
学习Excel技术,关注微信公众号: excelperfect 在查找相匹配的值时,如果存在重复值,而我们想要获取指定的匹配值,那该如何实现呢?...如下图1所示的工作表,在“商品”列中,存在一些重复的商品,现在我们要找出第2次出现的“笔记本”的销售量。 ?...图1 我们知道VLOOKUP函数通常会返回找到的第一个匹配值,或者最后一个匹配值,详见《Excel公式技巧62:查找第一个和最后一个匹配的数据》。...然而,我们可以构造一个与商品相关的具有唯一值的辅助列(详见《Excel公式技巧64:为重复值构造包含唯一值的辅助列》),从而可以使用VLOOKUP函数来实现查找匹配值。...在单元格H6中输入公式: =VLOOKUP(H2 & "-" &G6,B3:E 即可得到指定的匹配值,如下图3所示。 ? 图3 可以修改单元格H2或G6中的数值,从而获取相应匹配的数据。
学习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社群,进行技术交流和提问,获取更多电子资料。
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
将文本中所有的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 # 第一种方式
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
# 只将第4行中hello替换为A $ sed '4s/hello/A/g' file.txt # 将第2-4行中hello替换为A $ sed '2,4s/hello/A/g' file.txt #...从第2行开始,往下数4行,也就是2-6行 $ sed '2,+4s/hello/A/g' file.txt # 将最后1行中hello替换为A $ sed '$s/hello/A/g' file.txt...# 除了第1行,其它行将hello替换为A $ sed '1!...# 将匹配到的hello全部替换为HELLO,g表示替换一行所有匹配到的 $ sed 's/hello/HELLO/g' file.txt # 将第2次匹配到的hello替换 $ sed 's/hello...,-n关闭了模式空间的打印模式 $ sed -n 's/i/A/p' file.txt # 替换是忽略大小写,将大小写i替换为A $ sed -n 's/i/A/i' file.txt # 将替换后的内容另存为一个文件
例子1: sed –n ‘4s/hello/A/’ message 说明:将第4行中hello字符串替换为A,其它行如果有hello也不会被替换。...例子2: sed –n ‘2,4s/hello/A/’ message 说明:将第2-4行中hello字符串替换为A,其它行如果有hello也不会被替换。...符号表示取反,该命令是将除了第1行,其它行hello替换为A,上述定址方式也可以使用!符号。...例子1: sed -n ‘1,/^TS/d’ message 说明:匹配从第1行到TS开头的行,把匹配的行删除。...例子3: sed ‘1,2c A\nA’ message 说明:将message中1-2行内容分别替换为了A,需要在替换内容上手动加换行\n,这样当然也可以将一行内容替换为多行内容。
-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
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命令将其复制并存入一个称为保持缓存区的特殊缓冲区内。
只显示发生了改变的行 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 写入文件
演示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'
,到匹配到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
# 只打印文件的第3行 sed -n '3p' /etc/passwd # 只打印包含 "root" 的行 (效果类似 grep) sed -n '/root/p' /etc/passwd 3. s...& 符号在replacement中代表被匹配到的整个内容。 flags: g: 全局替换行内的所有匹配。 i: 忽略大小写。 数字 (如 2): 只替换每行中第 N 次出现的匹配。...代码示例: # 将每行第一个 "root" 替换为 "admin" sed 's/root/admin/' /etc/passwd # 将所有 "nologin" 替换为 "disabled" sed...sed替换: 使用 sed 命令,将 server.log 中所有出现的 “User” (首字母大写) 替换为 “Client”。...s/^/[INFO_LOG] / 是替换命令,^ 匹配行首,将其替换为指定的前缀。
,地址可以表示为文本的行号,或者匹配的正则表达式 sed -n '2,4p' /etc/hosts 基本的处理动作 p 打印 2,4p 2p;4p d 删除 2,4d 删除第234行 s 字符串替换 s.../old/new/将每行的第一个old替换为new s/old/new/3将每行的第三个old替换为new s/old/new/g 将所有的old替换为new 替换操作的分割符/可改为其他字符,如# $...-n ‘n;p’ a.txt 输出偶数行 sed -n '10,$' 输出第10行到结尾的所有偶数行 sed -n ‘$=’ 输出文件的行数 删除文本 sed '3,5d' a.txt删除第3-5行 sed...将每行的第3个xml替换为XML sed 's/xml/XML/g' a.txt 将所有的xml替换为XML sed ‘s/xml//g’ a.txt 将所有的xml都删除 sed 's/doc...个字段做~匹配 awk -F: ‘$7!
你的输出将覆盖原文件。非常危险,一定要注意。 范围 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
/, 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
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 插入内容
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,并打印到屏幕上。
,地址可以表示为文本的行号,或者匹配的正则表达式 sed -n '2,4p' /etc/hosts 基本的处理动作 p 打印 2,4p 2p;4p d 删除 2,4d 删除第234行 s 字符串替换 s.../old/new/将每行的第一个old替换为new s/old/new/3将每行的第三个old替换为new s/old/new/g 将所有的old替换为new 替换操作的分割符/可改为其他字符,如# $...'/^$/{n;/^$/d}' a.txt 删除重复空行 以上所有动作需要加 -i 替换文本 sed ‘s/xml/XML/’ a.txt 将每行的第一个xml替换为XML sed 's/xml/XML.../3' a.txt 将每行的第3个xml替换为XML sed 's/xml/XML/g' a.txt 将所有的xml替换为XML sed ‘s/xml//g’ a.txt 将所有的xml都删除 sed...个字段做~匹配 awk -F: ‘$7!