删除文件中1-10行的数据
sed -e '1,10d' ./myfile.txt
删除文件中以#开头的行,即删除注释
sed -e '/^#/d' ./myfile.txt
将每行第一次出现的xingdong替换成action
sed -e 's/xingdong/action/' ./myfile.txt
将每行所有的xingdong替换成action
sed -e 's/xingdong/actio/g' ./myfile.txt
把结果存储到文件
sed -e 's/xingdong/actio/g' ./myfile.txt > ./newfile.txt
或者
sed -i 's/xingdong/actio/g' ./myfile.txt
使用sed--格式
命令行格式
sed [options] 'command' file(s)
options -e;-n
command 行定位(正则) + sed命令(操作)
命令行格式举例
- sed -n '/root/p'
- sed -e '10,20d' -e 's/false/true/g'
基本操作命令
- -p 打印相关的行 需要和 -n 配合 sed -n 'p' /etc/passwd
- -a(新增行) /i(插入行) 新增是在某行之后,插入是在之前
-c(替代行)
-d(删除行)
nl /etc/passwd | sed '1,5i===' //在1-5行之前插入===
nl /etc/passwd | sed '5i===' //在5行之前插入===
sed '/^$/d' dt.php //去除空行 - -s(行首个字符替换) : 分隔符/,# 等
-g(全局替换)
sed -e 's/xingdong/actio/g' ./myfile.txt
sed -e 's/xingdong/action/' ./myfile.txt
高级操作命令
(1)
-{}:多个sed命令,用;分开
nl passwd|sed '{20,30d;s/false/true/}'
(2)
-n 读取下一个输入行(用下一个命令处理)
nl /etc/passwd |sed -n '{n;p}' //打印偶数行 同 nl /etc/passwd |sed -n '2~2p'
nl /etc/passwd |sed -n '{p;n}' //打印奇数行 同 nl /etc/passwd |sed -n '1~2p'
(3)
- &:替换固定字符串
cat /etc/passwd|sed 's/^[a-z]+/& /'
案例1:大小写的转换
元字符 \u\l\U\L :转换为大写/小写字符
cat /etc/passwd|sed 's/^[a-z]+/\U&/' //把用户名转换成大写
cat /etc/passwd|sed 's/^[a-z]+/\u&/' //把用户名首字母转换成大写
ls .php| sed 's/^\w+/\U&/' //把所有php文件名转换成大写
cat /etc/passwd| sed 's/([a-z]+):x:([0-9]+):([0-9]+).$/\1:\2:\3/' //取 用户名:uid:gid
(4)
-( ):替换某种(部分)字符串(\1,\2)
ifconfig eth0 | sed -n '/inet/p'| sed 's/inet ([0-9.]+).*$/\1/' // 取ip
(5)
-r:复制指定文件插入到匹配行
-w:复制匹配行拷贝到指定文件里
sed '1r 123.txt' abc.txt //复制123.txt的文件内容到 abc.txt第一行后面,文件内容没改变
sed '1w abc.txt' 123.txt //复制123.txt内容的第一行到abc.txt中(清空然后写入)
sed 'w abc.txt' 123.txt //复制123.txt内容到abc.txt中(清空然后写入)
(6)
q:退出sed
nl /etc/passwd | sed '/daemon/q' //找到daemon所在的行然后退出
nl /etc/passwd | sed '10q' //读取到第10行退出
sed -f scriptfile file(s)
已有 0 条评论