选项
-n 不打印;-e 下一命令是编辑命令,使用多条编辑命令时使用该选项;-f 使用sed脚本文件。
查找替换
sed -n 's/123/555&888/g'p a.txt
说明:保存查找串以便在替换串中使用,&代表查找串。
双查找
sed -n '/78/s/99/89/g'p a.txt
说明:sed中允许指定操作的范围,而范围则可以通过行号1,$或者正则表达式/pattern1/,/pattern2/来确定。
查找空行
查找空行
sed -n '/..*/'p a.txt or sed -n '/^$/'!p a.txt说明:p表示打印有字符的行,!表示不打印没有字符的行。
排除空行
sed -n '/^$/'p a.txt or sed -n '/..*/'!p a.txt
说明:p表示打印没有字符的行,!表示不打印有字符的行。
打印范围
sed -n '/#/,/typeset/'p a.txt
说明:位置范围是闭合的,如果结束条件不能满足,一直操作打印到文件结尾,如果结束条件能满足,则继续查找满足开始条件的位置,范围重新开始。
指定分隔符
指定分隔符
pwd|sed's#zy#zy/product#g'说明:紧跟在s命令后的字符就是查找串和替换串之间的分隔符。分隔符默认为正斜杠,但可以改变。无论什么字符(换行符、反斜杠除外),只要紧跟s命令,就成了新的串分隔符。这在使用sed处理路径时很有用,不过也可以在默认分隔符下使用"\/"表示正斜杠。
读入文件
sed '/78/r cmd.txt' a.txt or sed '$r cmd.txt' a.txt说明:与vi中的:read file命令有些相似,被读入的文件将插入到当前行的下一行,使用r命令时,只能指定/pattern1/r或$r的单一位置,不能是位置范围(/pattern1/,/pattern2/),不指定位置默认对整个文件执行操作。
保存到文件
sed '/123/,/78/w b.txt' a.txt or sed '1,$w b.txt' a.txt说明:将指定位置范围的行保存到某个文件中,类似于筛选后重定向的功能。
追加内容
sed '1a\
abc\
def' a.txt or
sed '1i\
abc\
def' a.txt说明:1a和1i的区别在于,前者会在指定行后追加内容,后者则在指定行前追加内容,使用a和i命令时,只能指定/pattern1/a或$a的单一位置,不能是位置范围(/pattern1/,/pattern2/),不指定位置默认对整个文件执行操作。如果要追加的内容超过一行,则除最后一行外,其他各行都必须以反斜杠结尾。
过滤某些行
sed '1,$d' a.txt or sed '/123/,/ccc/d' a.txt说明:将指定位置范围的行删除,保留其他行。
修改行内容
sed '1c\
abc\
def' a.txt说明:该命令将完整的修改在模式缓冲区中的当前行。如果范围模式被匹配,c命令将使用反斜杠后的文本替换匹配到的行。如果要插入的内容超过一行,则除最后一行外,其他各行都必须以反斜杠结尾。
退出命令
sed '5q' a.txt说明:q命令表示退出命令,该命令将导致sed程序退出,且不再进行其他处理。
读入下一行
sed '/aaa/{n;s/ccc/NNN/g;}' a.txt说明:n命令表示下一个命令,sed使用该命令获取输入文件的下一行,并将其读入到模式缓冲区中,任何sed命令都将应用到匹配行紧接着的下一行上。执行多条命令可以使用{cmd1;cmd2...}的方式。
执行多条命令
sed -n -e '/78/'p -e'/ccc/'p a.txt说明:-e表示在同一行执行多条命令。
其他命令
sed把当前正在处理的行保存到一个临时缓冲区,这就是模式空间,sed处理完模式空间中的行后,就把该行发送到屏幕上,sed每处理完一行就将其从模式空间中删除,然后将下一行读入模式空间,进行处理和显示。h命令把模式空间中的内容拷贝并覆盖到另一个特殊的缓冲区,叫做暂存缓冲区;H 把模式缓冲区的内容追加到暂存缓冲区;g 把暂存缓冲区的内容覆盖到模式缓冲区;G 把暂存缓冲区的内容追加到模式缓冲区;x 将模式缓冲区和暂存缓冲区中的当前行互换;
本文详细介绍了sed命令的各种用法,包括选项设置、查找替换、读取文件、保存到文件等操作,帮助读者掌握sed命令的强大功能。
115

被折叠的 条评论
为什么被折叠?



