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

待更新


Linux Shell 自动化之让文本飞的更多相关文章

  1. Linux Shell 文本处理工具集锦 zz

    内容目录: find 文件查找 grep 文本搜索 xargs 命令行参数转换 sort 排序 uniq 消除重复行 用tr进行转换 cut 按列切分文本 paste 按列拼接文本 wc 统计行和字符 ...

  2. Linux Shell 文本处理工具集锦

    本文将介绍Linux下使用Shell处理文本时最常用的工具:find.grep.xargs.sort.uniq.tr.cut.paste.wc.sed.awk:提供的例子和参数都是最常用和最为实用的: ...

  3. linux —— shell 编程(文本处理)

    导读 本文为博文linux —— shell 编程(整体框架与基础笔记)的第4小点的拓展.(本文所有语句的测试均在 Ubuntu 16.04 LTS 上进行) 目录 基本文本处理 流编辑器sed aw ...

  4. [转] Linux Shell 文本处理工具集锦

    内容目录: find 文件查找 grep 文本搜索 xargs 命令行参数转换 sort 排序 uniq 消除重复行 用tr进行转换 cut 按列切分文本 paste 按列拼接文本 wc 统计行和字符 ...

  5. Linux Shell 文本处理工具集锦(转载)

    内容目录: find 文件查找 grep 文本搜索 xargs 命令行参数转换 sort 排序 uniq 消除重复行 用tr进行转换 cut 按列切分文本 paste 按列拼接文本 wc 统计行和字符 ...

  6. linux shell 修改文本 sed

    linux shell 修改文本echo [root@DSI tmp]# echo 'yhqt1 test1' > test1.txt [root@DSI tmp]# cat test1.txt ...

  7. Linux Shell 文本处理工具集锦【转】

    转自:http://www.cnblogs.com/me115/p/3427319.html 内容目录: find 文件查找 grep 文本搜索 xargs 命令行参数转换 sort 排序 uniq ...

  8. Linux shell文本处理工具

    搞定Linux Shell文本处理工具,看完这篇集锦就够了 Linux Shell是一种基本功,由于怪异的语法加之较差的可读性,通常被Python等脚本代替.既然是基本功,那就需要掌握,毕竟学习She ...

  9. Linux Shell交互式自动化运维程序

    Expect是Linux操作系统下的一个用来处理交互操作,系统默认是没有安装expect库,所以执行expect会提示找不到命令,需要手动安装,其它安装也比较简单,可以通过二进制源码包编译配置进行安装 ...

随机推荐

  1. C# Common Keyword II

    [C# Common Keyword II] 1.as 运算符用于在兼容的引用类型之间执行某些类型的转换. class csrefKeywordsOperators { class Base { pu ...

  2. 129. Sum Root to Leaf Numbers(Tree; DFS)

    Given a binary tree containing digits from 0-9 only, each root-to-leaf path could represent a number ...

  3. 《Android Studio实用指南》7.1 AndroidStudio代码检查工具概述

    本文节选自<Android Studio实用指南> 作者: 毕小朋 目前本书已上传到百度阅读, 在百度中搜索[Anroid Studio实用指南]便可以找到本书. Android Stud ...

  4. SpringBoot集成freemarker和thymeleaf模板

    1.在MAVEN工程POM.XML中引入依赖架包 <!-- 引入 freemarker 模板依赖 --> <dependency> <groupId>org.spr ...

  5. 利用django中间件CsrfViewMiddleware防止csrf攻击

    一.在django后台处理 1.将django的setting中的加入django.contrib.messages.middleware.MessageMiddleware,一般新建的django项 ...

  6. [C++] const object

    const  object const 对象只能调用const函数 const函数不能改变一般成员变量的值,但是mutable的变量不受限制

  7. Qt编译,imp_CommandLineToArgvW@8问题

    Tested msvc2013. The linker can not find _imp_CommandLineToArgvW@8. It's in shell32.lib. I see qtmai ...

  8. Error creating bean with name 'us' defined in class path resource [com/liuyang/test/DI/beans2.xml]: Cannot resolve reference to bean 'daoa' while setting bean property 'daoa'; nested exception is org.

    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'us' defined ...

  9. c# MSMQ 消息队列

    转  消息队列 http://www.cnblogs.com/anbylau2130/p/3469512.html

  10. 螺旋折线——第九届蓝桥杯C语言B组(省赛)第七题

    原创 如图p1.png所示的螺旋折线经过平面上所有整点恰好一次. 对于整点(X, Y),我们定义它到原点的距离dis(X, Y)是从原点到(X, Y)的螺旋折线段的长度. 例如dis(0, 1)=3, ...