sed是linux命令三剑客之一,是stream editor的缩写,含义是流编辑器的缩写。
它擅长取行,替换,过滤。这个和awk有点类似,但是awk是取列,但是sed是取行。
用法:sed -n ‘/过滤的内容/处理的命令/‘ 文件名
-n 是取消sed的默认输出。
-p 是打印的意思。
-i 改变文件的内容。
-r 果不用r参数就要在正则表达式里使用很多的\来进行强制转换,如果使用r了就可以直接写正则表达式,而不用写那么多\了
= 可以代表行号。
sed替换,应用很广泛。
s是指常用的查找并替换,用一个字符串替换成另一个。
g是与s联合起来使用,表示对当前行全局匹配替换(与下一个g意义不同),如果不加上g就只是替换第一列,不会全局替换。
#是分隔符,可以用其他符号替换。
-i 是替换并修改。
格式为:sed ‘s###g’
例子:sed ‘s#oldboy#oldgirl#g‘ test.txt 但是仅仅修改的是输出的内容,文件实体没有做修改。
sed -i ‘s#oldboy#oldgirl#g‘ test.txt 加上-i就可以改变内容了
find /root/data/ -type f -name "test.txt"|xargs sed ‘s#oldboy#oldgirl#g‘ 这个例子就是用find和sed替换结合起来一起用的范例,
使用sed命令来取出ifconfig内的ip地址:
ifconfig eth0|sed -nr ‘s#^.*addr:(.*) B.*$#\1#gp‘
时间: 2024-10-14 04:58:03