千家信息网

sed命令

发表于:2024-10-21 作者:千家信息网编辑
千家信息网最后更新 2024年10月21日,sed命令是流编辑器。工作流程是:每次将相应的行==》模式空间(内存中)==》模式匹配在处理==》将模式空间里的内容输出到屏幕。注:sed命令默认不处理原数据,而是处理原数据的副本。用法格式:sed
千家信息网最后更新 2024年10月21日sed命令

sed命令是流编辑器。

工作流程是:每次将相应的行==》模式空间(内存中)==》模式匹配在处理==》将模式空间里的内容输出到屏幕。

注:sed命令默认不处理原数据,而是处理原数据的副本。


用法

格式:sed 'AddressCommand' file

对指定文件中符合Address(地址筛选的行)进行Command(命令处理)


Address支持的用法:

1,起始行,结束行。例'1,,100'(1到100行)

2,/正则匹配/ 支持正则模式匹配。里'/^root/'(以root为行首的行)

3,/正则匹配1/,/正则匹配2/ 表示被模1式匹配到的行开始到被模式2匹配到的行

4,行号 精确匹配到某行,$表示最后一行。例'1'(第一行)

5,起始行,+n 从起始行开始,到之后的N行


Command用法:

d:删除符合条件的行。 例 sed '1,2d' /etc/passwd(删除/etc/passwd中的第一到第二行) sed '/^root/d' /etc/passwd(删除/etc/passwd中root为行首的行) sed '/^\//d' /etc/passwd(删除etc/passwd中/开头的行,\为转意) p:显示符合条件的行。例 sed '/^\//p' /etc/passwd(显示etc/passwd中/开头的行)

a(apend) /string:在指定的行后追加字符串string新行,\n表示换行

i(insert) /string:在指定的前插入字符串string新行,\n表示换行

r file:将指定的文件的内容添加至符合条件的行处

w file:将指定的范围内的内容另存(会保存)到指定的文件中

s 查找并替换:将匹配到的内容进行替换

用法 sed 's/查找内容(支持正则)/替换内容(字符串,不支持正则)/修饰符'file 。在每行中默认只替换在该行中第一次匹配到的内容。

修饰符:g 全局替换。i 忽略大小写。

注:在s命令中,只要三个分割符一样,大部分符号都可以作为分隔符,这样可以在匹配冲突时换分隔符避免使用转移符

例:sed 's#\(l..e\)#\1r#g' 文件名。或 sed 's#l..e#$r#g' 文件名

$:为引用模式匹配的所有内容。

$与后向引用的差别:只引用匹配内容中的一部分内容是,只能用后向引用。

例: sed 's#l\(..e\)#L\1#g' 文件名



sed命令选项:

-h:禁默模式,不在显示模式空间的内容

-i:直接修改原文件

-e:同时执行多个脚本 -e 地址命令 -e 地址命令 ...

-f 指定文件:sed -f /path/scripts file 表示脚本里的内容出来文件

-r:支持扩展正则

0