sed基本用法

sed基本用法:
ed命令的常用选项如下:
-n(屏蔽默认输出,默认sed会输出读取文档的全部内容)
-r(让sed支持扩展正则)
-i(sed直接修改源文件,默认sed只是通过内存临时修改文件,源文件无影响)
行号可以是连续的行号,如打印passwd第3到第6行账户的信息 :
sed -n ‘3,6p’ /etc/passwd
sed ‘d’ /etc/passwd //删除所有行
sed -n ‘p’ /etc/passwd 匹配所有行
若希望直接修改文件内容,应添加选项 -i 。
比如,直接删除test.txt(自行创建一个任意内容的文件)的第1~4行: sed -i ‘1,4d’ test.txt //删除操作
打印第3和5行: sed -n ‘3p;5p’ /etc/passwd
打印第3以及后面的10行:sed -n ‘3,+10p’ /etc/passwd
打印奇数行: sed -n ‘1~2p’ /etc/passwd
打印偶数行: sed -n ‘2~2p’ /etc/passwd
(例子:sed n ‘3`5p’ /etc/passwd : 则输出第三行,第八行,第十三行…)
打印包含root的行:sed -n ‘/root/p’ /etc/passwd
打印bash结尾的行:sed -n ‘/bash / p ′ / e t c / p a s s w d s e d − n ′ /p' /etc/passwd sed -n ' /p/etc/passwdsedn=’ a.txt //输出文件的行数
sed ‘3,5d’ a.txt //删除第3~5行
sed ‘/xml/d’ a.txt //删除所有包含xml的行
sed ‘/xml/!d’ a.txt //删除不包含xml的行,!符号表示取反
sed ‘/^install/d’ a.txt //删除以install开头的行
sed ‘KaTeX parse error: Expected group after '^' at position 45: …件的最后一行 sed '/^̲/d’ a.txt //删除所有空行
ed命令的s替换基本功能(s/旧内容/新内容/选项)
替换操作的分隔“/”可改用其他字符,如#、&等,便于修改文件路径
sed ‘s/xml/XML/’ a.txt //将每行中第一个xml替换为XML
sed ‘s/xml/XML/3’ a.txt //将每行中的第3个xml替换为XML
sed ‘s/xml/XML/g’ a.txt //将所有的xml都替换为XML
sed ‘s/xml//g’ a.txt //将所有的xml都删除(替换为空串)
sed ‘s#/bin/bash#/sbin/sh#’ a.txt //将/bin/bash替换为/sbin/sh
sed ‘4,7s/^/#/’ a.txt //将第4~7行注释掉(行首加#号)
sed ‘s/^#an/an/’ a.txt //解除以#an开头的行的注释(去除行首的#号)
sed 's/.//2 ; s/. / / ′ n s s w . t x t 删 除 文 件 中 每 行 的 第 二 个 、 最 后 一 个 字 符 s e d − r ′ s / ( . ) ( . ) ( . ∗ ) ( . ) //' nssw.txt 删除文件中每行的第二个、最后一个字符 sed -r 's/^(.)(.)(.*)(.) //nssw.txtsedrs/(.)(.)(.)(.)/\1\3/ ’ 或 sed -r ‘s/^(.).(.).KaTeX parse error: Expected 'EOF', got '\1' at position 2: /\̲1̲\2/' 1.分两次替换操作,…//’ 替换掉最后一个字符
2.文件中每行的第一个、倒数第1个字符互换
每行文本拆分为“第1个字符”、“中间的所有字符”、“倒数第1个字符”三个部分,然后通过替换操作重排顺序为“3-2-1
sed -r 's/^(.)(.
)(.)KaTeX parse error: Expected 'EOF', got '\3' at position 2: /\̲3̲\2\1/' nssw.txt…a 192.168.4.5 svr5.tarena.com svr5’ /etc/hostsed综合脚

注h----H(h,表示复制,空行覆盖。H,复制,空行追加保留。)
g----G(g,粘贴,覆盖原先内容,G粘贴,保留原先内容)
sed综合脚本应用

先用sed工具取出登录Shell为/bin/bash的用户记录,保存为临时文件/tmp/urec.tmp,并计算记录数量
再结合while循环遍历取得的账号记录,逐行进行处理
针对每一行用户记录,采用掐头去尾的方式获得用户名、密码字串
按照指定格式追加到/tmp/getuupwd.log文件
结束循环后删除临时文件,报告分析结果
编写getupwd.sh脚本
[root@svr5 ~]# vim ./getupwd.sh
#/bin/bash
A= ( s e d − n ′ / b a s h (sed -n '/bash (sedn/bash/s/:.//p’ /etc/passwd) ## 提取符合条件的账号记录
for i in KaTeX parse error: Expected 'EOF', got '#' at position 43: … #̲#遍历账号记录 do …(grep i / e t c / s h a d o w ) p a s s 2 = i /etc/shadow) pass2= i/etc/shadow)pass2={pass1#
:}
pass=KaTeX parse error: Expected '}', got 'EOF' at end of input: …:*} echo "i --> $pass"
done
[root@svr5 ~]# chmod +x ./getupwd.sh
测试、验证执行结果
./getupwd.sh
用户分析完毕,请查阅文件 /tmp/getupwd.log
[root@svr5 ~]# less /tmp/getupwd.log
root --> 6 6 6IWgMYmRACwdbfwBo$dr8Yn983nswiJVw0dTMjzbDvSLeCd1GMYjbvsDiFEkL8jnXOLcocBQypOCr4C6BRxNowIxjh6U2qeFU0u1LST/
zengye --> 6 6 6Qb37LOdzRl5995PI$L0zTOgnhGz8ihWkW81J.5XhPp/l7x2./Me2ag0S8tRndCBL9nIjHIKkUKulHxJ6TXyHYmffbVgUT6pbSwf8O71
clamav --> !!
mysql --> !!
abc --> !!
/总结知识点:
#sed [选项] ‘条件指令’ 文件
选项:
-n 屏蔽默认输出
-r 支持扩展正则
-i 修改源文件
条件:
行号 4 4,5 4~2 4,+10
/正则/
指令:
p 打印
d 删除
s 替换s旧/新/g
a 追加
i 插入
c 替换行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值