浅谈Linux三剑客sed命令之篇三
相关理论概述请参考如下:
浅谈Linux三剑客中的sed命令之篇一
浅谈Linux三剑客中的sed命令之篇二
该篇主要是补充一些sed的特殊用法,上两篇是一些基础的使用。
补充1:
Sed命令中包含变量时,单引变双引。
(1) 双引号:
把双引号的内容输出出来;
如果内容中有命令、变量等,会先把命令、变量解析出结果,然后再输出最终内容来。
双引号内命令或变量的写法为`命令或变量`或$(命令或变量)。
(2) 单引号:
所见即所得,将单引号内的内容原样输出,阻止所有字符的转义。
如下所示:
$name="cat"
sed '/^$name/c hellokitty' demo.txt
sed "/^$name/c hellokitty" demo.txt

补充2:
Sed命令取反
//打印除去cat开头的行,!:取反
sed -n '/^cat/!p' demo.txt

补充3:
Sed中&的用法
Sed中&:
用于表示替换命令中的匹配模式
例如:将foo and goo中的foo和goo转换成"foo" and "goo"
这时我们会想到使用s替换
//这里的.表示任意一个字符,用于匹配foo和goo
//但是这里我们的本意不是替换成".oo" and ".oo"
echo "foo and goo" | sed -r 's/.oo/".oo"/g'

这里我们使用&表示.oo的字符
//这里的&表示.oo这种匹配模式(即:foo和goo)
echo "foo and goo" | sed -r 's/.oo/"&"/g'

补充4:
sed的s命令支持
odysee:~/shellFiles_1$sed -n 's/^cat/9527/p' demo.txt
9527
odysee:~/shellFiles_1$sed -n 's/^cat/9527/p' demo.txt
9527
odysee:~/shellFiles_1$

补充5:
Sed命令标签的用法
标签:
Sed使用()定义替换模式中的部分字符,标签方便在后面引用。
注意每行指令最多使用9个
//打印文件的第一列,这里使用正则表达式
//1是前面的(^[[:alnum:]]+)匹配到的第一列
sed -r 's/(^[[:alnum:]]+)(.*)/1/' /etc/passwd
这一句指令大家值得好好品味,这里不只是为了取文件第一列使用这么麻烦的语句
而是正则和()用法

欢迎大家给予宝贵的意见或者建议。
欢迎大家补充或者共享一些其他的方法。
感谢支持。