sed
可依照script的指令,来处理、编辑文本文件。 多用于对文本的行来操作,
常见 sed [option] 's///g' tmp.txt
参数说明
-e 多次使用sed
-r 扩展正则表达式
-n 的时候将只打印包含模板的行
动作说明
echo 192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0|sed 's/Bcast.*$//g'
# 下面重点 !!!
nl /etc/passwd |sed 's/:/\t/'|less -S
nl /etc/passwd |sed '4,$s/:/\t/'|less -S
nl /etc/passwd | sed -e 's/root/#####/' -e 's/qmcui/###!!!/'|less -S
# nl /etc/passwd | sed -e '3,$d' -e 's/bash/blueshell/' # 多次替换模式
#nl /etc/passwd | sed -e 's/:/\t/;s/:/\t/'|less -S # 理解;
#nl /etc/passwd | sed 's/false$/&! ! !/' | less -S # &代指match
# 上面重点 !!!
nl /etc/passwd | sed '1a\llll llllllll \n lllllll'|less -S
nl /etc/passwd | sed '2a drink tea' # 插到第2行后
nl /etc/passwd | sed '2i drink tea' | cat -n # 插到第2行前
nl /etc/passwd | sed '3,$d' # 删除,熟悉3,$ + 动作命令
nl /etc/passwd | sed '2,5c No 2-5 number' # 替换2-5行
nl /etc/passwd | sed -n '5,7p' # 输出
nl /etc/passwd | sed -n '2p;4,5p'
nl /etc/passwd |sed -n '4,+5p'
nl /etc/passwd | sed -n '4~4p'
nl /etc/passwd | sed -n '/root/p' # 只打印包含模式root的行
nl /etc/passwd | sed '/^$/d'
sed -i 's/\.$/\!/g' regular_express.txt
sed -i '$a # This is a test' regular_express.txt
动作含义
a
:新增, a 接字串,而这些字串会在新的一行出现(目前的下一行)~
c
:取代, c接字串,这些字串可以取代 n1,n2 之间的行!
d
:删除, d 后面通常不接任何;
i
:插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p
:打印,通常 p 会与参数 sed -n 一起运行~
s
:取代,
+ g:全局替换
+ i:忽略字符大小写
通配符:
$:
表示行号时:最后一行
一行时候:代表行末!
示例:
/pattern1/,/pattern2/ :第一次被模式1匹配到的行开始到第一次被模式2匹配到的行结束。
区域处理
sed '1,2s/ok//'
第一二行执行s/ok//操作!
uptime|sed -n '/,/s/,/ /gp'
问题中/,/是个正则表达式,用来在s///前面表示区域!表示只要该行中有逗号,那么就执行s命令。
将含有,的行进行 s/,/ /gp操作,将,全部换成空格并print
同款示例:
nl /etc/passwd | sed -n '/root/s/:/\t/p'
nl /etc/passwd | sed -n '1,2s/:/\t/p'
不学习: N,n
网友评论