sed

来源:互联网 发布:jenkins怎么修改端口 编辑:程序博客网 时间:2024/03/29 22:21

工作原理:

        sed(streams editor)是一个文本过滤器,一次处理一行内容,先把当前处理的行存储在临时缓冲——称为“模式空间”(pattern space),然后处理缓冲区中的内容,再将结果输出到屏幕,然后继续处理下一行,不断重复直到文件末尾。这一过程中原文件内容不变,除非你使用重定向存储输出,或者使用 "-i" 选项(即inline edit,行内编辑)。
        pattern space :处理缓冲
        hold space: 这个缓冲可用作临时备份

命令格式:

sed [options] 'command' file(s)sed [options] -f scriptfile file(s)


常用:

# 元字符:^#锚定行的开始$#锚定行的结束.#匹配一个非换行符的字符*#匹配零或多个字符[]#匹配一个指定范围内的字符[^]#匹配一个不在指定范围内的字符\(..\)#保存匹配的字符&#代表搜索表达式echo "i love it" | sed s/love/**love**/#i **love** it\<#锚定单词的开始\>#锚定单词的结束x\{m\}#字符x重复m次x\{m,\}#字符x重复m次及以上x\{m,n\}#字符x重复m~n次# 删除(d)sed '2d'# delete line 2sed '2,5d'# delete line 2~5sed '2,$d'# delete line 2~lastsed '/test/'d# delete line contain "test"sed 's/^[ \t]*//;s/[ \t]*$//'# 删除行前&行尾空格或者TAB# 替换(s)sed s/foo/bar/# 仅匹配第1个sed s/foo/bar/g# 全行匹配sed s/foo/bar/4# 仅匹配第4个sed -n s/foo/bar/p# 仅打印被替换的行sed 's/\(foo\)/\1+/'# foo => foo+ (\1=foo)sed 's#10#100#g'# 紧跟s的字符("#")被当作分隔符sed 's/\(.*\)foo\(.*foo\)/\1bar\2/'# 替换倒数第二个“foo”sed 's/\(.*\)foo/\1bar/'# 替换最后一个“foo”sed '/baz/s/foo/bar/g'# 行中出现baz才替换sed '/baz/!s/foo/bar/g'# 行中未出现baz才替换# 行范围选定(,)sed -n /foo/,/bar/p# print line /foo/ ~ /bar/sed -n 2,/foo/p# print line 2 ~ /foo/sed '/foo/,/bar/s/$/_end/'# 在line /foo/ ~ /bar/ 后面追加"_end"# 命令组合(e)sed -e '1,5d' -e 's/test/check/'sed --expression='s/test/check/' --expression='/love/d'# pattern & hold space相关sed G# 在每行后面增加一个空行sed '/^$/d;G'# 将多个空行合并成一个sed 'G;G'# 在每一行后面增加两个空行sed 'n;d'# 删除所有偶数行sed '/regex/{x;p;x;}'# 在/regex/对应行之前插入一个空行sed '/regex/G'# 在/regex/对应行之后插入一个空行sed '/regex/{x;p;x;G;}'# 在/regex/对应行之前和之后各插入一个空行# 其它sed -n '$='# 打印文本总行数


原创粉丝点击