sed命令

回复 收藏

2.4 sed命令-1

-n p -r d -i

打印某行 :  sed -n '10'p 1.txt

打印1-10行:  sed -n '1,10'p 1.txt

打印20行到尾行:  sed -n '20,$'p 1.txt

打印包含某个字符串的行:  sed -n '/root/'p 1.txt

grep中使用的特殊字符,如 ^ $ . * 等同样也能在sed中使用

sed -n '/r.o/'p 1.txt

用到?+(){}| 时要加-r 或使用脱意符\

sed -n -r '/(rr)+/'p 1.txt

-e可以实现多个行为:sed -e '1'p -e '/111/'p -n test.txt

删除某行或者多行: sed '/^$/'d 1.txt ; sed '1,19'd 1.txt

sed -i '1,19'd 1.txt 加-i会真正在文件上删除内容

// 用在匹配、替换的时候

2.5 sed命令-2

1-10行替换单个字符: sed '1,10s/nologin/login/g' 1.txt

(全局)字符串替换单个字符: sed 's#/sbin/nologin#login#g' 1.txt

所有行替换成login: sed 's#^.*$#login#g' 1.txt

所有行结尾加login:  sed 's#^.*$#&login#g' 1.txt

&表示一整行

删掉所有数字: sed 's#[0-9]##g' 1.txt

删掉所有字母: sed 's#[a-zA-Z]##g' 1.txt

删掉所有特殊符号: sed 's#[^0-9a-zA-Z]##g 1.txt

第一段和最后一段调换: sed -r 's#(^[a-z0-9]+)(:.*:)(.*$)#\3\2\1#g 1.txt

sed -r 's/([^:]+)(:.*:)([^:]+)/\3\2\1/' /etc/passwd

用分号;实现多个语句匹配:

sed -n '/user/p; /aming/p' 1.txt

==  sed -n -e '/user/p' -e '/aming/p' 1.txt

2016-12-05 17:41 举报
已邀请:

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: