sed是linux环境下被广泛使用的行处理命令,完美支持正则表达式,在很多场景下都会用到,熟练使用linux下的正则表达式是必备技能。
假设我们有个配置文件,里面配置了现有所有交易的交易编码,交易名称,交易路由,由于维护混乱,后续添加交易的时候必然要考虑交易编码会不会重复,用sed命令可以轻松将所有交易码匹配出来,经过sort命令排序后存入到另外一个文件中
sed命令常见用法
选项:
n --静默模式,只输出涉及到的行(--silent)
i --直接修改文件内容而不是输出到标准输出
命令:
s --替换
d --删除
a\ --在点钱行下面插入文本
i \ --在当前行上面插入文本
c \ --把选定的行改成新的文本
标记:
p --打印涉及到的行
g --选中行中所有满足条件的字符串而不是只选中第一个
examples:
1、sed 's/my/you/' test.txt --替换my为you,分隔符'/'也可以是其他例如 逗号 ',' 冒号‘:’
sed 's,my,you,' test.txt
2、sed 's/my/you/g' test.txt --每行所有my都被替换
sed 's/my/you/p' test.txt --发生替换的行会被打印出来
sed -n 's/my/you/p' test.txt --发生替换的行会被打印出来,不输出无关信息
3、 sed '2d' test.txt --删除第2行
sed '$d' test.txt --删除最后一行
sed '2,10d' test.txt --删除2~10行
sed '1,$d' test.txt --删除所有行
sed '/^$/d' test.txt --删除空行
4、 sed -n 'p;n' test.txt --打印奇数行
sed -n 'n;p test.txt --打印偶数行
5、sed脚本
sed -f sed.sh test.txt
cat sed.sh :
s/your/my/p
s/apple/banana/p
6、sed.sh test.txt --直接运行的脚本,cat sed.sh
#!/bin/sed -f
s/your/my/p
s/apple/banana/p
7、获取本机ip
ifconfig eth0 | sed -n '2p' | sed 's/^.*inet.\{1,4\}://g' | sed 's/ .*//g'