shell-早间学习,每日一点

1、定位行:
sed -n '12,~3p' pass #从第12行开始,直到下一个3的倍数行(12-15行)
sed -n '12,+4p' pass #从第12行开始,连续4行(12-16行)
sed -n '12~3p' pass #从第12行开始,间隔3行输出一次(12,15,18,21...)
sed -n '10,$p' pass   #从第10行至结尾
sed -n '4!p' pass   #除去第4行

2、正则:'/正则式/'
sed -n '/root/p' /etc/passwd
sed -n '/^root/p' /etc/passwd
sed -n '/bash$/p' /etc/passwd
sed -n '/ro.t/p' /etc/passwd
sed -n '/ro*/p' /etc/passwd
sed -n '/[ABC]/p' /etc/passwd
sed -n '/[A-Z]/p' /etc/passwd
sed -n '/[^ABC]/p' /etc/passwd
sed -n '/^[^ABC]/p' /etc/passwd
sed -n '/<root/p' /etc/passwd
sed -n '/root>/p' /etc/passwd

3、sed编辑(对行的插入、删除、替换操作)
sed '/root/a admin' /etc/passwd   #在root行后追加一个admin行
sed '/root/i admin' /etc/passwd   #在root行前插入一个admin
sed '/root/c admin' /etc/passwd   #将root行替换为admin
sed '/root/d' /etc/passwd    #删除含有root的行

s替换
sed -n 's/root/admin/p' /etc/passwd
sed -n 's/root/admin/2p' /etc/passwd        #在每行的第2个root作替换
sed -n 's/root/admin/gp' /etc/passwd
sed -n '1,10 s/root/admin/gp' /etc/passwd
sed -n 's/root/AAA&BBB/2p' /etc/passwd       #将root替换成AAArootBBB,&作反向引用,代替前面的匹配项
sed -ne 's/root/AAA&BBB/' -ne 's/bash/AAA&BBB/p' /etc/passwd #-e将多个命令连接起来,将root或bash行作替换
sed -n 's/root/AAA&BBB/;s/bash/AAA&BBB/p' /etc/passwd   #与上命令功能相同
sed -nr 's/(root)(.*)(bash)/321/p' /etc/passwd     #将root与bash位置替换,两标记替换
或sed -n 's/(root)(.*)(bash)/321/p' /etc/passwd
bash:x:0:0:root:/root:/bin/root

y替换
echo "sorry"|sed 'y/ory/ABC/' #一一对应替换(sABBC)

原文地址:https://www.cnblogs.com/pony1223/p/3371433.html