
1.把文本第1行读入到内存 模式空间(pattern space),相当于放到流程水线上处理吧
2.把处理好的结果存放到另一个内存空间(hold space)相当于临时的仓库吧
3.输出处理结果,循环处理第2行,覆盖清空(pattern space)、(hold space)至最后一行
由于各种各样的原因,比如用户希望在某个条件下脚本中的某个命令被执行,或者希望察老模式空间得到保留以便下一次的处理,都有可能使得sed在处理文件的时候不按照正常的流程来进行。这个时候,sed设置了一些返吵高级命令来满足用户的要求。
sed命令:
不管是大写还是小写g、h都是在pattern space、hold space相互拷贝
区别是 小写代表清空原来数据漏没侍,大写是保留原来数据在后面追加新数据
案例
图解分析过程
P:Pattern Space
H:Hold Space
蓝色:Hold Space中的数据
绿色:Pattern Space中的数据
案例
参考链接:
https://www.cnblogs.com/fhefh/archive/2011/11/22/2259097.html
你的范例冲悄里面,srcfile是一个python object,放到sedcmd字符散哪渣串里面,sed会把它当文件名处理,自然找不到文件。这个问题可以用subprocess解决。
#!/usr/bin/env python2# 缓猜coding=utf-8
"""
specify stdin when using subprocess
"""
import subprocess
def main():
with open('/qye/python/mytestpython/tmp.txt', 'rb') as f:
o = subprocess.check_output(["sed", "-n", "s/{//g p"], stdin=f)
# or:
# o = subprocess.check_output("sed -n 's/{//g p'", shell=True, stdin=f)
if __name__ == '__main__':
main()
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)