sed [options] 'command' file(s) sed [options] -f scriptfile file(s) 1.options -n 取消默认输出,只有经过sed特殊处理行(或者动作)才会被列出来 -e 多重编辑模式 -f 指定sed脚本文件名 2. command 1) d 从模板块(Pattern space)位置删除行 # delete the 3rd line sed '3d' file # delete lines from the 3rd to end sed '3,$d' file # delete line it contains "line" sed '/line/'d file 2) p 打印模板块的行 # "abc start\nefg middle" echo "abc start\nefg middle\nhij end\nover" | sed -n '/start/,/middle/p' # "efg middle\nhig end" echo "abc start\nefg middle\nhij end\nover" | sed -n '2,/end/p' # "abc start123\nefg middle123" echo "abc start\nefg middle\nhij end\nover" | sed -n '/start/,/middle/s/$/123/p' # grep def echo "abc\ndef\nghi\njkl" | sed -n '/def/p' echo "abc\ndef\nghi\njkl" | sed '/def/!d' # grep -v def echo "abc\ndef\nghi\njkl" | sed -n '/def/!p'# "abc\nghi\njkl" echo "abc\ndef\nghi\njkl" | sed '/def/d'# "abc\nghi\njkl" # abc,匹配行的前一行 echo "abc\ndef\nghi\njkl" | sed -n '/def/{g;1!p;};h' # ghi,匹配行的后一行 echo "abc\ndef\nghi\njkl" | sed -n '/def/{n;p}' 3) s/re/string/ 用string替换正则表达式re echo "abcdefg" | sed 's/abc/123/g' # 123defg echo "abcdefg" | sed -n 's/^abc/123/p' # 123defg echo "abcdefg" | sed 's#\(abc\)defg#\1#' # abc # delete spaces in front of each row sed 's/^[ ]*/g' file sed 's/^ */g' file sed 's/^[[:space:]]*//g file 4) r file 从file中读行 eg: file contains "123\n456" # abc\n123\n456\ndef echo "abc\ndef" | sed '/abc/r file' 5) w file 向file中写行,清空原有文件内容 # now, file content is "abc" echo "abc\ndef" | sed -n '/abc/w file' 6) a\ 当前行后面加入一行文本 # "abc\n123\ndef", '\'换行时,不可少,最后一行,可省略 echo "abc\ndef" | sed '/^abc/a\123' 7) i\ 在当前行前面插入一行文本 # "123\nabc\ndef" echo "abc\ndef" | sed '/^abc/i\123' 8) h 将 hold space 中的内容使用 pattern space 中的内容来替换(清空暂存缓冲区) 9) H 将 hold space 中的内容使用 加上一个 trailing newline,而后 append pattern space(不清空暂存缓冲区) 10) g 将 pattern space 中的内容使用 hold space 中的内容来替换 11) G 将 pattern space 中的内容使用 加上一个 trailing newline,而后 append hold space 12) ! 表示后面的命令对所有没有被选定的行发生作用 # "abc\ndef\nghi\ndef" echo "abc\ndef\nghi" | sed -e '/def/h' -e '$G' # "abc\ndef\nghi\n\ndef" echo "abc\ndef\nghi" | sed -e '/def/H' -e '$G' # "abc\ndef\ndef" echo "abc\ndef\nghi" | sed -e '/def/h' -e '$g' # "abc\ndef\n\ndef" echo "abc\ndef\nghi" | sed -e '/def/H' -e '$g' # "jkl\nghi\ndef\nabc" echo "abc\ndef\nghi\njkl" | sed '1!G;h;$!d' # "abc\n\ndef\n" echo "abc\ndef" | sed G # "abc\n\ndef\n" echo "abc\n\n\ndef" | sed '/^$/d;G' # "abc\n\ndef\nghi\njkl", add a blank line before the matching one echo "abc\ndef\nghi\njkl" | sed '/def/{x;p;x;}' # "abc\ndef\n\nghi\njkl", add a blank line after the matching one echo "abc\ndef\nghi\njkl" | sed '/def/G' # "abc\n\ndef\n\nghi\njkl", add a blank line before and after the matching one echo "abc\ndef\nghi\njkl" | sed '/def/{x;p;x;G}' 13) n 读取下一个输入行,用下一个命令处理新的行而不是用第一个命令 echo "abc\ndef" | sed '/abc/{n;s/e/E/;}' # "abc\ndEf" echo "abc\ndef\nghi\njkl" | sed 'n;d' # "abc\nghi", delete the even lines 14) y与tr类似,字符替换 # "ABC\ndef" echo "abc\ndef" | sed '1y/abcdef/ABCDEF/' 15) = 打印当前行号码 # 2 echo "abc\ndef\nghi\njkl" | sed -n '/def/=' # 4, wc -l echo "abc\ndef\nghi\njkl" | sed -n '$=' 16) q 退出 # "abc\ndef", head -2 echo "abc\ndef\nghi\njkl" | sed 2q # jkl, tail -1 echo "abc\ndef\nghi\njkl" | sed -e :a -e '$q;N;2,$D;ba' # "ghi\njkl", tail -2 echo "abc\ndef\nghi\njkl" | sed '$!N;$!D' # jkl, tail -1 echo "abc\ndef\nghi\njkl" | sed '$!d' # jkl, tail -1 echo "abc\ndef\nghi\njkl" | sed -n '$p' 3. meta characters ^锚定行的开始 $锚定行的结束 .匹配一个非换行符的字符 *匹配零或多个字符 如:/*sed/匹配所有模板是一个或多个空格后紧跟sed的行。 []匹配一个指定范围内的字符 [^]匹配一个不在指定范围内的字符 \(..\)保存匹配的字符 echo "abcdefg" | sed 's/\(abc\)def/\1***/' # abc***g &保存搜索字符用来替换其他字符 echo "abcdefg" | sed 's/d/--&--/' # abc--d--efg \<锚定单词的开始 \>锚定单词的结束 x\{m\}字符x重复m次 x\{m,\}字符x重复至少m次 x\{m,n\}字符x重复至少m次,至多n次
相关推荐
sed是一种流编辑器,它是文本处理中非常有用的工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为『模式空间』(pattern space),接着用sed命令处理缓冲区中的...
sed找到关键字所在行并将其前面的第一个字符... 您可能感兴趣的文章:查看某时间段到现在的系统日志的sed命令linux之sed命令的用法一天一个shell命令 linux文本内容操作系列-sed命令详解linux中sed命令的使用与注意小结
本文将对一些常用的Linux命令进行小结,包括但不限于gcc、grep、tar、sed、find、screen、nohup、scp以及文本处理相关命令。 **gcc命令** gcc(GNU Compiler Collection)是一个用于编译C、C++、Objective-C等语言...
《awk小结(by ruson)》是一份关于awk命令的详细总结,主要针对shell脚本编程和Linux系统操作。awk是一种强大的文本分析工具,常用于处理结构化的数据文件,如日志、CSV或TSV文件。它允许用户通过指定模式和动作来...
根据提供的文件信息,以下是对“awk小结(by ruson)”中提到的关键知识点的详细解释: ### 一、awk简介 #### 1. awk是什么? - **awk** 是一种强大的文本处理工具,在Linux和Unix环境中广泛使用。 - 它可以进行...
1.10 小结 13 第2章 使用find和xargs 14 2.1 find命令选项 14 2.1.1 使用name选项 15 2.1.2 使用perm选项 16 2.1.3 忽略某个目录 16 2.1.4 使用user和nouser选项 16 2.1.5 使用group和nogroup选项 16 2.1.6 按照更改...
1.10 小结 13 第2章 使用find和xargs 14 2.1 find命令选项 14 2.1.1 使用name选项 15 2.1.2 使用perm选项 16 2.1.3 忽略某个目录 16 2.1.4 使用user和nouser选项 16 2.1.5 使用group和nogroup选项 16 2.1.6 按照更改...
1.10 小结 13 第2章 使用find和xargs 14 2.1 find命令选项 14 2.1.1 使用name选项 15 2.1.2 使用perm选项 16 2.1.3 忽略某个目录 16 2.1.4 使用user和nouser选项 16 2.1.5 使用group和nogroup选项 16 2.1.6 按照更改...
1.10 小结 13 第2章 使用find和xargs 14 2.1 find命令选项 14 2.1.1 使用name选项 15 2.1.2 使用perm选项 16 2.1.3 忽略某个目录 16 2.1.4 使用user和nouser选项 16 2.1.5 使用group和nogroup选项 16 2.1.6 按照更改...
### awk用法小结 #### 一、awk简介与特点 **awk** 是一款非常强大的文本处理工具,尤其适用于处理结构化的文本文件,比如那些按照行和列组织的数据。相较于 **sed**,**awk** 提供了更为丰富的编程功能,能够进行...
1.10 小结 第2章 /CP协议 2.1 概述 2.2 /CP中的新CP选项 2.3 /CP实现所需变量 2.4 状态变迁图 2.5 /CP的扩展状态 2.6 小结 第3章 /CP使用举例 3.1 概述 3.2 客户重新启动 3.3 常规的/CP事务 3.4 服务器收到过时的...
1.10 小结 13 第2章 使用find和xargs 14 2.1 find命令选项 14 2.1.1 使用name选项 15 2.1.2 使用perm选项 16 2.1.3 忽略某个目录 16 2.1.4 使用user和nouser选项 16 2.1.5 使用group和nogroup选项 16 2.1.6 按照更改...
1.10 小结 13 第2章 使用find和xargs 14 2.1 find命令选项 14 2.1.1 使用name选项 15 2.1.2 使用perm选项 16 2.1.3 忽略某个目录 16 2.1.4 使用user和nouser选项 16 2.1.5 使用group和nogroup选项 16 2.1.6 按照更改...
1.10 小结 13 第2章 使用find和xargs 14 2.1 find命令选项 14 2.1.1 使用name选项 15 2.1.2 使用perm选项 16 2.1.3 忽略某个目录 16 2.1.4 使用user和nouser选项 16 2.1.5 使用group和nogroup选项 16 2.1.6 按照更改...
1.10 小结 13 第2章 使用find和xargs 14 2.1 find命令选项 14 2.1.1 使用name选项 15 2.1.2 使用perm选项 16 2.1.3 忽略某个目录 16 2.1.4 使用user和nouser选项 16 2.1.5 使用group和nogroup选项 16 2.1.6 按照更改...