千家信息网

shell中sed命令如何使用

发表于:2024-09-21 作者:千家信息网编辑
千家信息网最后更新 2024年09月21日,这篇文章给大家分享的是有关shell中sed命令如何使用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。sed工具:sed是文本流编辑器,逐行对文件的内容进行处理用法:sed
千家信息网最后更新 2024年09月21日shell中sed命令如何使用

这篇文章给大家分享的是有关shell中sed命令如何使用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

sed工具:sed是文本流编辑器,逐行对文件的内容进行处理

用法:sed [option] ... 'script' inputfile...

选项:

-n:静默模式,不输出模式空间的内容至屏幕

-e:实现多点的功能编辑

-f /path/from/script_file:从指定的文件读取编辑脚本

-r:支持使用扩展的正则表达式

地址界面方法:

(1)不给地址:对全文进行处理

(2)一个地址(单地址)

#:指定的行

/pattern/:被引用处模式所能够匹配到的每一行:

(3)地址范围

#,#:从第几行到第几行

#,+#:显示从第几行开始向后的N行

/pat1/,/pat2/:同时匹配2个参数,表示匹配这2个参数之间的所有行

#,/pat1/:表示匹配这2个参数之间的所有行

(4)~:步进

#sed -n '1~2p' test.txt(第一行开始,每次增加2行,意思就是显示奇数行)


#sed -n '2~2p' test.txt(从第二行开始显示,每次增加2行,意思就是显示偶数行)

编辑命令:

d:删除被地址界定选定的内容

p:显示(打印)模式空间中的内容到屏幕上,只打印符合条件的行,常于-n结合一起使用

a \text:在行后面一行追加文本:支持使用\n实现多行追加;

例: #sed '/^T/a \abc' a.txt

i \text:在行前面一行追加文本:支持使用\n实现多行追加;

例:# sed '/^T/i \abc' a.txt

c \text:替换匹配到的行:

例:# sed '/^T/c \abc' a.txt

w /path/to/somefile:保存模式空间中匹配到的内容至指定文件中;

r /path/from/somefile:读取指定文件的文本游戏 至模式空间中匹配到的行后;

=:为模式空间中的行,打印行号;

例:#sed -n '/^T/=' a.txt

q:一旦匹配到内容,则退出;不再往下匹配

!:取反条件;对除了模式匹配到的行以外的行,进行操作;

s///:支持使用其它分隔符,s@@@,s###

替换标记:

g:行内全局进行替换:例:sed -n 's@r..t@&er@p' /etc/passwd 不带g选项,只替换每一行的第一次

#:行内替换,替换第几次出现的匹配的内容,例:sed -n 's/Unix/UNIX/2p' a.txt,把第2次出现的Unix替换

p:如果替换成功,则显示替换成功的行,与-n一起使用

w /path/to/somefile:将替换成功的行保存至指定文件中

练习1:删除/boot/grub/grub.conf文件中所有以空白开头的行行首的空白字符

#sed 's@^[[:space:]]\+@@' /boot/grub/grub.conf

练习2:删除/etc/fstab文件中所有以#开头,后面至少跟一个空白字符的行的行首的#和空白字符

#sed 's@^#[[:space:]]\+@@' /etc/fstab

练习3:echo一个绝对路径给sed命令,取出其基名:

#echo "/etc/sysconfig" | sed 's@[^/]\+$@@'

练习4:批量修改文件名字

#ls *.jpg | sed 's#\(.*\)_finished\(.*\).*#mv & \1\2#g' | bash

高级编辑命令:

h:把模式空间中的内容覆盖至保持空间中;

H:把模式空间的内容追加至保持空间中;

g:从保持空间取出数据覆盖至模式空间;

G:从保持空间取出数据追加至模式空间;

x:把模式空间中内容与保持空间中的内容进行互换操作;

n:读取匹配到的行的下一行覆盖至模式空间;

N:读取匹配到的行的下一行追加至模式空间;

d:删除模式空间中的所有行;

D:删除多行模式空间中的第一行;

示例用法:

#sed -n 'n;p' test.txt(输出偶数行)

#sed 'n;d' test.txt(只显示奇数行)

#sed '$!d' test.txt(最出文件最后一行)

#sed 'G' test.txt(在每一行下面加一个空白行)

#sed '/^$/d;G' test.txt(每行间只保留一个空白行)

#sed '1!G;h;$!d' test.txt(逆行显示文件内容)

#sed '$!N;$!D' test.txt(读文件的后2行)

#sed -n '1!G;h;$p' test.txt(逆行显示文件内容)

保持空间使用的一个例子:

需求:把单词the和statement之间的单词的全部改为大写

原文:

find the Match statement

consult the Get statement

using the Read statement to retrieve data

sed写法:

/the .*statement/{

h

s/.*the \(.*\)statement.*/\1/

y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/

G

s/\(.*\)\n\(.*the \).*\( statement.*\)/\2\1\3/

}

结果:

find the MATCH statement

Consult the GET statement

using the READ statement to retrieve data

解析:

/the .*statement/:匹配这种模式的行,然后进行修改

h:将匹配到的内容覆盖至保持空间,保留一份复本

s/.*the \(.*\)statement.*/\1/:在模式空间中将匹配到行转换为要改变的单词

y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/:将修改后的单词转换为大写

G:把保持空间的复本追加到模式空间

s/\(.*\)\n\(.*the \).*\( statement.*\)/\2\1\3/:将修改为大写的单词替换到原语句中的单词

感谢各位的阅读!关于"shell中sed命令如何使用"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

空间 模式 内容 文件 一行 单词 地址 空白 命令 文本 支持 成功 之间 参数 大写 字符 多行 在行 偶数 复本 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 数据库窗体性别设置为男女 微软云怎么购买云服务器 成都软件开发学校哪家好 银行软件开发工作在哪里找 关于网络安全的简短标题 涉密网络安全保密培训证书 电力网络安全监控工作亮点 对网络技术前景看法 幼儿园班级网络安全课活动记录 电脑没有dns服务器是怎么回事 图海网络安全 振兴杯网络安全管理员 网络安全游戏是什么游戏 明日之后日服服务器 国家网络安全宣传反响 网吧落实网络安全技术措施 滨州移动城管软件开发电话 上海通递驿优网络技术 蝴蝶梦下载软件开发 电脑怎么刷新数据库 人文地理知识数据库 信息与网络安全管理制度 服务器机架安装图解 计算机网络技术工资高不高 网络安全没有硝烟的战争 王思聪花百万装电脑 服务器 常州新型软件开发价格表格 OUO下载软件开发 病毒侵略服务器还能修复吗 简单宝互联网科技上海有限公司
0