sed: stream editor (行編輯器)
默認(rèn)不編輯原文件术徊,僅對模式處理
sed 'Addresscommand' file ....
指定Address
1.開頭,結(jié)束 (1,100)
$:最后一行
$-1:倒數(shù)第二行
2.正則表達(dá)指定模式 (/^root/)
3.模式1旧烧,模式2 (/pattern1/, /pattern2/) 從模式1開始到模式2中間所有的行
4.Line number(精確行 )
5.Startline, +N 從startline開始,向后N行
命令:
d
刪除
p
顯示符合條件的行
a \
在匹配的行后面加自己顯示的內(nèi)容
i \
在匹配的行前面加自己顯示的內(nèi)容
如:
$ cat 11_1.sh
#!/bin/bash
#
file=/etc/
if [ ! -e $file ]; then
echo "no $file"
exit 1
fi
if [ -f $file ]; then
echo "$file is a common file."
elif [ -d $file ];then
echo "$file is a dir."
else
echo "unknown file."
fi
$ sed '1,2d' 11_1.sh #d 刪除
file=/etc/
if [ ! -e $file ]; then
echo "no $file"
exit 1
fi
if [ -f $file ]; then
echo "$file is a common file."
elif [ -d $file ];then
echo "$file is a dir."
else
echo "unknown file."
fi
包含if就全部刪了 / /
斜線:模式匹配
$ sed '/if/d' 11_1.sh
#!/bin/bash
#
file=/etc/
echo "no $file"
exit 1
fi
echo "$file is a common file."
echo "$file is a dir."
else
echo "unknown file."
fi
相對行刪除豫缨,刪除第1行開始向后2行(前三行)
$ sed '1,+2d' 11_1.sh
if [ ! -e $file ]; then
echo "no $file"
exit 1
fi
if [ -f $file ]; then
echo "$file is a common file."
elif [ -d $file ];then
echo "$file is a dir."
else
echo "unknown file."
fi
只除第一行 sed 1d 11_1.sh
p
顯示 顯示以/
開頭的看靠,匹配自身需要在/
前面加一個反斜線\
$ sed '/^\//p' /etc/fstab
/dev/vda1 / ext3 noatime,acl,user_xattr 1 1
/dev/vda1 / ext3 noatime,acl,user_xattr 1 1
proc /proc proc defaults 0 0
sysfs /sys sysfs noauto 0 0
debugfs /sys/kernel/debug debugfs noauto 0 0
devpts /dev/pts devpts mode=0620,gid=5 0 0
/dev/vdb1 /public ext3 defaults 0 0
/dev/vdb1 /public ext3 defaults 0 0
/dev/vdc /home ext3 defaults 0 0
/dev/vdc /home ext3 defaults 0 0
#/dev/vdf /trainee ext3 defaults 0 0
/mnt/10GiB.swap swap swap defaults 0 0
/mnt/10GiB.swap swap swap defaults 0 0
可以看到符合命令的顯示了2次
可以使用-n
不再顯示模式空間內(nèi)容,只顯示符合條件的行
$ sed -n '/^\//p' /etc/fstab
/dev/vda1 / ext3 noatime,acl,user_xattr 1 1
/dev/vdb1 /public ext3 defaults 0 0
/dev/vdc /home ext3 defaults 0 0
/mnt/10GiB.swap swap swap defaults 0 0
a \
在匹配的行后面加自己顯示的內(nèi)容
$ sed '/^\//a \ hello world' /etc/fstab
/dev/vda1 / ext3 noatime,acl,user_xattr 1 1
hello world
proc /proc proc defaults 0 0
sysfs /sys sysfs noauto 0 0
debugfs /sys/kernel/debug debugfs noauto 0 0
devpts /dev/pts devpts mode=0620,gid=5 0 0
/dev/vdb1 /public ext3 defaults 0 0
hello world
/dev/vdc /home ext3 defaults 0 0
hello world
#/dev/vdf /trainee ext3 defaults 0 0
/mnt/10GiB.swap swap swap defaults 0 0
hello world
$ sed '/^\//a \hello world\nhello' /etc/fstab #\n換行
/dev/vda1 / ext3 noatime,acl,user_xattr 1 1
hello world
hello
proc /proc proc defaults 0 0
sysfs /sys sysfs noauto 0 0
debugfs /sys/kernel/debug debugfs noauto 0 0
devpts /dev/pts devpts mode=0620,gid=5 0 0
/dev/vdb1 /public ext3 defaults 0 0
hello world
hello
/dev/vdc /home ext3 defaults 0 0
hello world
hello
#/dev/vdf /trainee ext3 defaults 0 0
/mnt/10GiB.swap swap swap defaults 0 0
hello world
hello
i \
在匹配的行前面加自己顯示的內(nèi)容
$ sed '/^\//i \hello world' /etc/fstab
hello world
/dev/vda1 / ext3 noatime,acl,user_xattr 1 1
proc /proc proc defaults 0 0
sysfs /sys sysfs noauto 0 0
debugfs /sys/kernel/debug debugfs noauto 0 0
devpts /dev/pts devpts mode=0620,gid=5 0 0
友情閱讀推薦:
生信技能樹公益視頻合輯:學(xué)習(xí)順序是linux愕秫,r慨菱,軟件安裝,geo戴甩,小技巧符喝,ngs組學(xué)!
B站鏈接:https://m.bilibili.com/space/338686099
YouTube鏈接:https://m.youtube.com/channel/UC67sImqK7V8tSWHMG8azIVA/playlists
生信工程師入門最佳指南:https://mp.weixin.qq.com/s/vaX4ttaLIa19MefD86WfUA
學(xué)徒培養(yǎng):https://mp.weixin.qq.com/s/3jw3_PgZXYd7FomxEMxFmw