Linux三剑客之sed简单用法
1. 统一实验文本
# 创建包含下面内容的文件,后面的操作都会使用这个文件
[bigdata@Master22 java]$ cat a.txt
1,java,hbase
2,python,Django
3,scala,kafka
4,java,hadoop
5,java,hive
6,scala,spark
2. 增删改查
2.1 增
a 追加文本到指定行后
i 插入文本到指定行前
2a 追加到第二行后面
[bigdata@Master22 java]$ sed '2a 7,python,web' a.txt
2i 把内容 插入到第二行前面
[bigdata@Master22 java]$ sed '2i 106,ben,CTO' a.txt
1,java,hbase
106,ben,CTO
2,python,Django
3,scala,kafka
4,java,hadoop
5,java,hive
6,scala,spark
2.2 删
d 删除指定的行
不指定行,就删除所有行,所以没有结果
[bigdata@Master22 java]$ sed 'd' a.txt
删除文本第二行
[bigdata@Master22 java]$ sed '2d' a.txt
1,java,hbase
3,scala,kafka
4,java,hadoop
5,java,hive
6,scala,spark
把文本 第二行到第5行内容删掉
[bigdata@Master22 java]$ sed '2,5d' a.txt
1,java,hbase
6,scala,spark
把文本的 第二行以上到结尾的行都删掉
[bigdata@Master22 java]$ sed '2,$d' a.txt
1,java,hbase
删除文本第二行,第三行
[bigdata@Master22 java]$ sed '2,3d' a.txt
1,java,hbase
4,java,hadoop
5,java,hive
6,scala,spark
删除文本奇数行,留下偶数行
[bigdata@Master22 java]$ sed '1~2d' a.txt
2,python,Django
4,java,hadoop
6,scala,spark
把文本 第二行到 2+2=4 第四行删掉 2-4 删掉
[bigdata@Master22 java]$ sed '2,+2d' a.txt
1,java,hbase
5,java,hive
6,scala,spark
匹配有python字符串那行 删除掉
[bigdata@Master22 java]$ sed '/python/d' a.txt
1,java,hbase
3,scala,kafka
4,java,hadoop
5,java,hive
6,scala,spark
把有python字符串的行,和第三行删掉
[bigdata@Master22 java]$ sed '/python/,3d' a.txt
1,java,hbase
4,java,hadoop
5,java,hive
6,scala,spark
按字符串查询
打印 匹配对应字符串的行
打印java的行
[bigdata@Master22 java]$ sed -n '/java/p' a.txt
1,java,hbase
4,java,hadoop
5,java,hive
打印scala字符串 到 python字符串的行
[bigdata@Master22 java]$ sed -n '/scala/,/python/p' a.txt
3,scala,kafka
4,java,hadoop
5,java,hive
6,scala,spark