sed 上下文寻址用'/pattern1/,/pattern2/p'此处的p表示打印的意思,中间有逗号
sed的文本替换[address]s/exp1/exp2/flags 其中的[address]是可选的 中间没有逗号
例如:sed 's/asd/ASD/g' 其中的g是全局的意思。
在包含某个串的行里执行某种替换操作的语法格式为:
sed -n '/str1/s/str2/str3/p' file 意思为在含有str1串里把str2 替换为str3
------------------------------------------------------------------------------------------
重复模式:&
sed 's/str1/str2 str1/' file
sed 's/str1/str2 &/' file &代替前面的源字符串。
sed '/str1/s//str2 &/' file 第一个str1代表寻址含有str1的行,后面的//
代表记忆模式代表前面扫描的str1 最后的str2 & 是把//里的内容,也就是str1
替换成str2 & 其中的&代表前面的源字符串。
以上三个句子代表一个意思。
-------------------------------------------------------------------------------------------
间隔正则表达式:
ch/{m/} ---元字符出现m次
ch/{m,n/}----元字符出现次数大于m而小于n
ch/{m,/} -----元字符至少出现m次
例如:
grep '[0-9]/{10/}' file 它匹配一个数字字符出现了10 次
sed -n '/^./{5,8/}w/p' 其中的.表示任意字符,/{5,8/}表示出现5到8次。
--------------------------------------------------------------------------------------------
带标志的正则表达式:
sed 's//([a-z]*/) */([a-z]*/)//2,/1' file 其中 /([a-z]*/)表示的是
一个组,这个组表达的意思是字母字符出现0次或多次 ,/1表示前面出现的
第一个组。
一个稍微难懂一点的命令:
sed 's~/(../)//(../)//(../)~19/3/2/1~' file
1、先来解释~此处的作用是传统sed命令中的/,s~pattern1~pattern2/ 想象成
s/pattern1/pattern2/
2、/(../)表示任意两个字符
3、/3/2/1就是把前面匹配的三个串倒过来。