sed -e '操作' 文件1 文件2 … sed -n -e '操作' 文件1 文件2 … sed -f 脚本文件 文件1 文件2 … sed -i -e '操作' 文件1 文件2 … sed -e 'n{ 操作1 操作2 … }' 文件1 文件2 …
sed -n -e 'p' testfile1 sed -n -e '=' testfile1 sed -n -e '1' testfile1 sed -n -e '=;p' testfile1 sed -n -e '=' -e 'p' testfile1 sed -n ' > = > P > ' testfile1
sed编辑器有2种寻址方式:
1、以数字形式表示行区间
sed -n '1p' testfile1 sed -n '$p' testfile1 sed -n '1,3p' testfile1 sed -n '3,$p' testfile1 sed -n '1,+3p' testfile1 #打印1之后的连续3行,即1-4行 sed '5q' testfile1 #打印前5行信息后退出, q表示退出 sed -n 'p;n' testfile1 #打印奇数行; n表示移动到下一行 sed -n 'n;p' testfile1 #打印偶数行 sed -n '2,${n;p}' testfile1
2、用文本模式来过滤出行
sed -n '/user/p' /etc/passwd sed -n '/^a/p' /etc/passwd sed -n '/bash$/p' /etc/passwd sed -n '/ftp\|root/p' /etc/passwd sed -n '2,/nobody/p' /etc/passwd sed -n '2,/nobody/=' /etc/passwd sed -nr '/ro{1,}t/p' /etc/passwd #-r表示支持扩展正则表达式
sed 'd' testfile1 #全删 sed '3d' testfile1 sed '2,4d' testfile1 sed '$d' testfile1 sed '/^s/d' testfile1 #删除空行 sed '/nologin$/d' /etc/passwd sed '/nologin$/!d' /etc/passwd #!"表示取反操作 sed '/2/,/3/d' testfile2 #从第一个位置打开行删除功能,到第二个位置关闭行删除功能 sed '/1/,/3/d' testfile2
sed -n 's/root/admin/p' /etc/passwd sed -n 's/root/admin/2p' /etc/passwd sed -n 's/root/admin/gp' /etc/passwd sed 's/root//g' /etc/passwd sed '1,20 s/^/#/' /etc/passwd sed '/^root/ s/$/#/' /etc/passwd sed -f script.sed testfile2 sed '1,20w out.txt' /etc/passwd sed '1,20 s/^/#/w out.txt' /etc/passwd sed -n 's/\/bin\/bash/\/bin\/csh/p' /etc/passwd sed -n 's!/bin/bash!/bin/csh!p' /etc/passwd #使用"!"作为字符串分隔符 sed -i 's9\945\9\99198\939g' test.txt #将94599替换为9893
sed '/45/c ABC' testfile2 sed '/45/ y/45/AB/' testfile2 sed '1,3a ABC' testfile2 sed '1i ABC' testfile2 sed '5r /etc/resolv.conf' testfile2 sed '/root/{H;d};$G' /etc/passwd #将包含root的行剪切到末尾, H表示复制到剪切板, G表示粘贴到指定行后 sed '1,2H;3,4G' /etc/passwd #将1、2行复制到3和4行的下面 echo "111222333" | sed -r 's/ (111)(222)/\2\1/' #将字符111和222互换位置 echo "111222333" | sed -r 's/^(.)(.*)(.)$/\3\2\1/' #将第一个字符和最后一个字符互换