区别于正则,通配符通常用户命令行bash环境linux
` tab 上面的引号,两个
`中间为命令,会先执行,等价$()。ifconfig eth0 | sed -n '2p' | sed 's#^.*inet##g' |sed 's#n.*##g' | sed 's#^ ##' ##sed -n '2p' 打印出第二行 sed 's#^.*inet##g' 匹配替换到 inet sed 's#n.*##g' 匹配 取消netmask 之后的数据 sed 's#^ ##' 去除空格 注意 ^.*inet ^.* 表示任意字符开头 匹配到 inet为止
第二种方法
sed -nr 's#支持正则的位置##gp' file(s前的2为行号)
sed - n 's#()()#\1\2#gp' file 当前面匹配的部分用小括号的时候,第一个括号内容,能够在后面部分1\输出。同理 \2 也同样
示例正则表达式
I an oldboy teacher ! sed -nr '1s#^.*n (.*) t.*$#\1#gp' ./oldboy.log ##-r 开启正则 1s 第一行 ^.*n 以任意字符开头到n空格结尾(.*) 表示里面匹配的内容oldboy teacher 过滤以空格t.* 任意字符结尾 \1 引用(.*)的配置匹配内容输出
取IP vim
ifconfig eth0 | sed -n -r '2s#^.*et (.*) n.*$#\1#gp'
示例取644bash
stat /etc/hosts | sed -nr '4s#^.*\(0(.*)/-.*$#\1#gp'