Linux sed命令使用方法
1. 缩写
sed是stream editor的缩写。
2. 常用选项
-i,原地修改输入文件
3. 常见使用场景
3.1 替换某个文本的所有出现
使用方法为sed 's/<word1>/<word2>/g' input.txt
s指substitution(替换)/是分隔符,也可以是其他字符作分隔符,如+<word1>是被替换的字符串<word2>是要替换为的字符串g表示global(全局替换),不指定g的话只会替换每一行的第一次出现的<word1>。
3.2 删除指定行
行编号都是从1开始
sed '<n>d' input.txt,删除第<n>行sed '$d' input.txt,删除最后一行sed '<start>,<end>d' input.txt,删除第<start>到<end>行(闭区间)
4. sed的正则表达式
sed默认使用Basic Regular Expression(BRE)语法,如果指定了-E或者-r或者--regexp-extended选项则使用Extended Regular Expression(ERE)语法。
BRE和ERE的唯一区别在于这些特殊字符的行为:?, +, (, ),{, },|。在BRE中它们直接使用就是普通字符,加上\前缀之后才是特殊的元字符;而在ERE中正好相反,直接使用是元字符,加上\前缀变成普通字符。
Basic Regular Expression(BRE)语法常用规则如下:
<char>,普通字符<char>匹配自身*,匹配0次或多次前面的项(单个普通字符,单个位于\后的特殊字符,单个.,单个grouped regexp,或者单个方括号表达式)\+,类似*,但匹配1次或多次\?,类似*,但匹配0次或1次.,匹配任意单个字符,包括newline^,表示行的开头$,表示行的结束[<list>],匹配<list>中的任意单个字符,<list>也可以包括char1-char2用于指定其中的所有字符(闭区间),<list>中也可以包括字符类(如[:blank:]表示空字符,即空格和tab)[^<list>],类似[<list>],但匹配不在<list>中的任意单个字符\(<regexp>\),将<regexp>当做一个整体,构成一个grouped regexp(使用举例:整体应用*操作符等)<regexp1>\|<regexp2>,匹配<regexp1>或者<regexp2><regexp1><regexp2>,匹配<regexp1>和<regexp2>的连接\n,匹配newline\<char>,匹配特殊字符<char>,<char>可以是$,*,.,[,\,^
