首先看下面一段凌乱的Python代码
这是从网上拷贝的一段python代码的开头部分,格式非常混乱,有行号,有过多的空行和空格,这种直接拷贝的代码是无法直接运行的,需要你手动把这些无用的符号删除,对于成百上千行的代码,如果手动删除太多麻烦,即便你使用一些文本编辑器的替换功能,也未必能够很好的达到你的目的。这个时候就是sed大显身手的时候了。
删除空白行(对于一个Python代码块,空白行会产生错误)
删除行号,使代码左对齐
删除备注(以#号开头的行)
上述代码通过-e参数指定了4条sed命令,分别删除每一行开头的前三个字符(行号)、删除空白行、删除以#号开头的备注行(\s表示空格符)、删除每行第一个字符使左对齐。随后就得到了标准的Python代码格式.
{}:嵌套sed命令
对于更为复杂的sed命令,可以使用大括号将不同的命令分组,比如还是上面Python代码,如果想把4-100行之间的代码进行整理,则可以先指定行范围,然后使用大括号将不同的sed命令组合起来。
r:读入文件
这儿需要两个文件做演示,新建另一个文本文件example1.txt,如下
如果我们要在example.txt文件的第二行开始插入该文件exemple1.txt
如果要在example.txt文件的最后一行插入
如果要在数字8的行后面插入该文件
a或i:添加字符串行
比如我们要在example.txt文件的第二行之后(a)或之前(i)添加一行“THIS is the middle of the file”
a和i都可以完成添加行,不同的是,a(append)是在指定行之后添加,i(insert)是在指定行之前添加。
c:修改行
比如我们要把example.txt文件的第二行修改成“It is the first day of 2019”,可以使用c(change)参数来修改。
“=”:输出行号
之前学过awk,结合”wc -l”,可以输出一个文件的行数。
当然更简单的方法是在sed中使用“=”输出行号。用法如下:
我们还可以筛选出符合一定条件的行,比如输出以“H”开头行的行号
y:转换字符
比如把所有的“a”转换成“A”:
l:显示控制符
在寻找bug的时候特别有用,把一般不显示的文本控制符显示出来。
在每一行的末尾都加上了“$“,表示该行结束。
****百读不如一练 ****
===== THE END ====
参考资料:http://www.grymoire.com/Unix/Sed.html#uh-30
领取专属 10元无门槛券
私享最新 技术干货