zoukankan      html  css  js  c++  java
  • Linux Shell 自动化之让文本飞

    Linux Shell 自动化之让文本飞

    一、前言:

    ​ 作者之前在一家 IDC 从事运维兼职工作,后来因某些原因辞职开始 Python 爬虫数据分析。因为这些经历以及后续时间积累下的经验,发现好像自己对文本分析可以写出点东西了。于是本着记录自己这块已掌握的知识点,开始参考书籍和翻阅手册编写本文。希望本文可以使大家对 Linux 下的文本分析有一个清晰的认识并**提高工作效率 **。


    二、介绍:

    ​ sed 是流编辑器( stream editor )的缩写,众所周知的是用于文本替换(即搜索并修改文本中指定的文本流);awk 是其开发者( Aho、Weinberger、Kernighan )设计用于进行 “行列” 数据流操作的文本**编程语言 **。

    ​ 当然,sed 和 awk 只是 GNU/Linux 下大部分命令行文本处理工具的俩个神器,相似的还有cutgreptr 等等工具。


    三、简用:

    I、体验变量替换 ${}

    [root@ ~]# var='welcome to linux family'
    [root@ ~]# echo ${var/family/home}
    welcome to linux home
    

    如上使用 ${} 完成变量替换,当然 ${} 还有文本切片能力。 更多点我查看博客园文章

    II、编辑器VIM文本处理

    • 文本查找

      • :g/STRING/p

    • 文本替换

      • :%s/CONTECT/STRING/

    • 文本分析

      • :!grep -Eo '( )[a-z]{3}( )' %

    III、sed 文本处理

    • 文本显示

      • sed -n '2p;4p'

    • 文本替换

      • sed -s 's/CONTECT/STRING/g'

    • 文本分析

      • sed 's/$/end' ($/^)

      • sed '/$/^/ STRING

    V、awk 文本分析

    点我跳转



    四、复杂:

    感受一下

    ➜  ~ Time Now 19:44:12 > seq 1 999999 >> /tmp/maths.txt && awk '{ if(6-length($0)==5) print "00000"$0 } { if(6-length($0)==4) print "0000"$0  } { if(6-length($0)==3) print "000"$0 } { if(6-length($0)==2) print "00"$0 } { if(6-length($0)==1) print "0"$0  } { if(6-length($0)==1) print "0"$0 }  { if(6-length($0)==0) print $0   }  ' /tmp/maths.txt
    
    ➜  ~ Time Now 19:47:04 > sudo seq 1 999999 >> /tmp/maths.txt && awk '{ if(6-length($0)==5) print "00000"$0 } { if(6-length($0)==4) print "0000"$0  } { if(6-length($0)==3) print "000"$0 } { if(6-length($0)==2) print "00"$0 } { if(6-length($0)==1) print "0"$0  } { if(6-length($0)==1) print "0"$0 }  { if(6-length($0)==0) print $0   }  ' /tmp/maths.txt  | col -b >> /tmp/maths2.txt       
    
    ➜  ~ Time Now 19:48:32 > sudo rm -rf /tmp/maths.txt && seq 1 999999 >> /tmp/maths.txt && awk '{ if(6-length($0)==5) print "00000"$0 } { if(6-length($0)==4) print "0000"$0  } { if(6-length($0)==3) print "000"$0 } { if(6-length($0)==2) print "00"$0 } { if(6-length($0)==1) print "0"$0  } { if(6-length($0)==1) print "0"$0 }  { if(6-length($0)==0) print $0   }  ' /tmp/maths.txt  | col -b >> /tmp/maths3.txt
    
    
    

    待更新


  • 相关阅读:
    WPF 自适应布局控件
    c# 将Datarow转成Datarowview
    C# 全局Hook在xp上不回调
    WPF datagrid AutoGenerateColumns隐藏部分列
    WPF wpf中按钮操作权限控制
    C# autofac配置文件中设置单例
    Castle ActiveRecord 二级缓存使用 异常记录
    VS2013 抛出 stackoverflow exception 的追踪
    CastleActiveRecord在多线程 事务提交时数据库资源竞争导致更新失败的测试结果记录
    WF4.0 工作流设计器 传入参数问题记录?
  • 原文地址:https://www.cnblogs.com/itxdm/p/6980506.html
Copyright © 2011-2022 走看看