sed是流编辑器的缩写,流编辑器,主要用于对标准输出或文件进行处理。
语法:
stdout | sed[选项]“模式命令” sed[选项]“模式命令”file1
# - n只打印静默模式匹配行,而不输出原行 # p是打印命令 & # 10140;sed helloWorld.sh/hello/p # !/bin/bash 你好bash 回声“hello world” 回声“hello world” & # 10140;sed - n helloWorld.sh/hello/p 回声“hello world” # - e追加一组编辑命令 & # 10140;sed - n - e '/hello/p - e helloWorld.sh/hello/p 你好bash 回声“hello world” # - f把所有编辑命令保存在文件中,适用于复杂编辑操作 & # 10140;猫edit.sed/hello/p & # 10140;sed - n - f编辑。sed hello.md # - e(或- r)支持扩展正则表达式 & # 10140;sed - n - e helloWorld.sh/你好|你好/p 你好bash 回声“hello world” #我直接修改源文件内容 #年代是替换命令 #这里是吧helloWorld。上海文件中所有的你好改为hello123 sed - n - s/hello/hello123/g的helloWorld.sh >之前
匹配模式 说明 10命令 第十行 10年,20年的命令 第10到20行 10 + 5命令 第十到16行/pattern1/命令 匹配pattern1对应的行/pattern1/,/pattern2/命令 从pattern1对应的行开始,到pattern2的行 10/pattern1/命令 从第十行开始,到pattern1的行/pattern1/10命令 从pattern1对应的行开始,到第十行
查询
-
<李> p打印匹配的内容李>
增加
-
<李>一个字符串行后追加李>
<李>我字符串行前追加李>
<李> r文件从外部文件读入,在匹配的行后追加李>
<李> w newfile中将匹配的行写入外部文件李>
删除
-
<李> d删除李>
修改
-
<李> s/老/新替换行内第一个旧为新李>
<李> s/老/新/g行内所有老替换为新李>
<李> s/老/新/2 g从第2行开始到文件末尾的所有老替换为新李>
<李> s/老/新/ig行内所有老替换为新的,忽略大小写李>
示例:
#删除以系统开的头,并且以/sbin/nologin结尾的行 & # 10140;sed -我'/^ sys。* \/sbin \/nologin/d ' passwd_bak美元 #删除注释行,空行 sed -我的/[空白:]* #/d;/^ $/d ' passwd_bak #查找在以流浪汉开头的行,下一行追加内容 & # 10140;sed - i '/^的流浪汉/这是追加的一行内容的passwd_bak #把所有的根替换为root123 & # 10140;sed -我的s/根/root123/ig passwd_bak #在所有以系统开的头,以nologin结尾的行,尾部追加_666 #其中,表示前面正则匹配到的内容 & # 10140;sed - i/^ sys。* nologin $/, _666/g的passwd_bak #把所有以系统开的头,以nologin_666结尾的行改为 #以SYS_开的头,以_777结尾,其中\ 1表示前面括号中匹配的中间部分内容 & # 10140;sed - i ' s/^ sys \ (. * \) nologin_666/SYS_ \ 1美元_777/g的passwd_bak #把1 ~ 10行所有的sys改为系统 & # 10140;sed - 1, 10年代/sys/sys/ig的passwd_bak 文#统计my . cnf中所做件中mysqld的子配置项数量 # sed查找从(mysqld)到下一个(。*)之间的行 # grep - v过滤注释,空行和[。*]行 # wc - l统计最后的行数 sed - n "/^ \ [mysqld \] $//^ \ [。* \]$/p”/etc/my.cnf | grep ev ' ^ $ | [#;] | ^ \ [。* | wc - l >之前注意:如果匹配模式中存在变量,则建议使用双引号,如sed - s/OLD_STR/NEW_STR美元/g”passwd_bak
到此这篇关于壳牌文本处理三剑客之sed的使用的文章就介绍到这了,更多相关壳文本处理sed内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
壳牌文本处理三剑客之sed的使用