[转帖]文本提取、分析和修改工具

文本,提取,分析,修改,工具 · 浏览次数 : 0

小编点评

**文本提取工具** - **文件内容:**使用 `less` 或 `cat` 命令,可以读取文件的内容。 - **文本摘要:**使用 `head` 和 `tail` 命令,可以显示文件的前几行或后几行内容。 - **通过列提取:**使用 `cut` 命令,可以按照指定的分隔符将文件内容列出。 - **通过关键字提取:**使用 `grep` 命令,可以搜索文件中的关键词。 - **使用正则表达式提取:**使用 `grep` 和 `sed` 命令,可以根据正则表达式搜索文件中的内容。 - **使用正则表达式进行匹配:**使用 `grep` 和 `sed` 命令,可以根据正则表达式进行文本匹配。

正文

https://www.cnblogs.com/hongjinping/p/12995438.html

 

一、提取文本工具:

  1.文件内容:less和cat

    less通过n/N进行查找到搜索的内容

  2.文本摘要:head和tail

    head使用-n显示头部行数

    tail也可以使用-n显示尾部行数,具体用法如下:#cat test.txt | tail -n3或者#cat test.txt | heal -n4

    可以用来截取某个文件里面第五行之后的7行内容如:#cat test.xtx | head -n 11 | tail -n 7

  3.通过列提取:cut

  4.通过关键字提取:grep

    打印出模式匹配到的文件或者标准输入行

      $grep 'john' /etc/passwd

      $date --help | grep year

      。使用-i查询时不区分大小写

      。使用-n打印匹配到的行号

      。使用-v打印不包含匹配模式的行

      。使用-AX包括在每次匹配之后X行

      。Use -BX包括每次匹配之前X行

      使用vim可以指定打开对应文件的行号,如:vim +34  /etc/passwd 进入/etc/passwd文件中的第34行

      如过滤文件中配置有效的文件,即取出空行和#的行,如下:#cat test.txt | grep ^# -v | grep -v ^$等同于命令:

      #cat test.txt | grep -Ev   '^(#|$)'=#cat test.txt | grep -Ev   '(^#|^$)'。

      以下图片为修改文件的操作:

      

 

  通过列提出文本cut

    显示文件指定的列或者标准输入的数据

    .$cut -d :-f1 /etc/passwd  //提取/etc/passwd 文件中分隔符按照":“,第一个字段的内容

    .$grep root /etc/passwd | cut -d:-f7

    使用-d指定列的分隔符(默认为TAB)

    使用-f指定要打印的列

    使用-c按字符切分

      .cut -c2-5 /usr/share/dict/words

    eg:通过以下方式获取网卡里面的ip地址:

  

    eg:通过以下方式获取字符串中5-12为字符:

  

   排序文本sort

  .排序文本到标准输出-未修改源文件

  .$sort [options] file(s)

  .命令选项

    。-r执行反响(降序)排序

    。-n按数字执行排序

    。-f忽略字符串中的大小写

    。-u(唯一)移除输出中重复的行

    。-t c使用c作为字符分隔符

    。-k X对字段X排序

   。能使用多次

    eg:使用sort命令对/etc/passwd文件第三列进行排序:

    #cat /etc/passwd | sort -t : -k 3 -n

  去除重复的行:sort和uniq

  sort -u:从输入中移除重复的行

  uniq:从输入中移除重复相邻行

    .使用-c来统计重复的次数

    .最好与sort一起使用:$sort userlist.txt | uniq -c (先排序然后使用uniq统计次数)

  分析文本的工具:

  .文本统计:wc

    收集文本统计信息wc(单词统计)

    。统计单词,行,字节和字符

    。能使用在一个文件后者标准输入上

      。$cat  /etc/passwd | wc [-w|-l|-c]

      。使用-l作为行数统计

      。使用-w作为单词统计

      。使用-c作为字节统计

      。使用-m作为字符统计(不显示)

  .文本排序:sort

  .对比文件:diff和patch

    对比两个文件找出差异$diff foo.conf-broken foo.conf-works(对比结果<箭头是foo.con-broken,>箭头是foo.conf-works文件内容,其中6c6中c表示被修改了5d4

    复制文件所做的改变patch

    diff输出保存到一个文件里,称呼其为“补丁文件”

      。使用-u作为“统一”格式的diff,适用于补丁文件

    patch复制所做的改变到其他文件中(小心使用!)

      。使用-b自动备份欲改变的文件

      $diff -u foo.conf-broken foo.conf-works >foo.patch   //比较foo.conf-broken(v1.0版本)与foo.conf-works(v2.0版本)对比,将结果重定向到foo.patch中

      $patch -b foo.conf-broken <foo.patch  //将补丁包foo.patch文件写入到foo.conf-broken文件中,实现版本v1.0到2.0升级,之后可以比对foo.conf-broken和foo.conf-works发现此时两个文件内容已经相同

  .拼写检查:aspell

  操作文本的工具tr和sed: 

复制代码
.修改(转换)字符:tr
    。将一些列字符转化成对应的另外一系列字符
    。只从标准输入中读取数据
        $tr 'a-z' 'A-Z' <lowercase.txt
.修改字符串:sed
    。流编辑器
    。对文本流做查询/替换操作
    。通常不会修改原文件
    。使用-i.bak来备份并修改原文件
实例:
  。用引号括起查询和替换指令!
  。sed寻址:
    #sed 's/dog/cat/g' pets
    #sed '1,50s/dog/cat/g' pets
    #sed '/digby/,/duncan/s/dog/cat/g' pets
  。多个sed指令
    sed -e 's/dog/cat/' -e 's/hi/lo/' pets
    sed -f myedits pets //这里-f是调用已经写好替换规则的myedits的文件,pets是需要使用该规则的文件名
  sed格式(下面的/、#、@为分界定位符): sed ‘s/查找内容1 /替换内容2/'用于没有/的替换
      sed 's#  #  #'
      sed 's@  @  @'
  sed修饰符:g(global)全局;i(case-insensitive)无视大小写;d(delete)
区间替换:sed m,n s/  /  /    //使用m,n,m为起始位置,n为结束为止,来实现区间查找替换。
    #cat ./iptables.lst | sed '87,93s/172.24./10.0./'  //将iptables.lst文件中数字87到93的区间内容为172.24.替换为10.0.
    #cat animal.txt | sed '/cat/,/dog/s/$/ <----/'  猫狗游戏,在animal.txt文件中找到猫,知道找到狗这个区间的$结尾符号替换成<----,其他不替换。
    -e开关可以讲多个表达式合并起来,实现多个替换。
    

 


    以上命令中的方法有多个替换语句,可以使用-f参数文件来实现,调用的时候使用sed -f 被调用的文件


 

 
复制代码

 

不积跬步无以至千里

与[转帖]文本提取、分析和修改工具相似的内容:

[转帖]文本提取、分析和修改工具

https://www.cnblogs.com/hongjinping/p/12995438.html 一、提取文本工具: 1.文件内容:less和cat less通过n/N进行查找到搜索的内容 2.文本摘要:head和tail head使用-n显示头部行数 tail也可以使用-n显示尾部行数,具体

[转帖]perf学习-linux自带性能分析工具

存储技术为满足层出不穷应用的海量数据存储需求,从物理介质到技术架构也同样发生了天翻地覆的变革。无论技术如何更新换代,其目的都是为了更好的提供高性能,高容量,高可用的数据服务。本系列文章会对存储系统的测试和调试工具做一个介绍。 dd - Linux世界中的搬运工 FIO – IO压力测试工具 vdbe

[转帖]lua-book-文件操作

http://me.52fhy.com/lua-book/chapter8.html Lua I/O 库用于读取和处理文件。分为简单模式、完全模式。 简单模式(simple model) 拥有一个当前输入文件和一个当前输出文件,并且提供针对这些文件相关的操作。 完全模式(complete model

[转帖]深度学习和机器学习的区别

最近在听深度学习的课,老师提了一个基本的问题:为什么会出现深度学习?或者说传统的机器学习有什么问题。老师讲解的时候一带而过,什么维度灾难啊之类的,可能觉得这个问题太浅显了吧(|| Д)````不过我发现自己确实还不太明白,于是Google了一下,发现一篇很棒的科普文,这里翻译一下,分享给大家:翻译自

[转帖] 拒绝蛮力,高效查看Linux日志文件!

https://www.cnblogs.com/codelogs/p/16410363.html 简介# 日常分析问题时,会频繁地查看分析日志,但如果蛮力去查看日志,耗时费力还不一定有效果,因此我总结了在Linux常用的一些日志查看技巧,提升日志阅读效率。 grep查找日志# 在我们查找某些异常日志

[转帖]JVM系列之:关于逃逸分析的学习

本文为《深入学习 JVM 系列》第十九篇文章 上文讲解完方法内联后,JIT 即时编译还有一个最前沿的优化技术:逃逸分析(Escape Analysis) 。废话少说,我们直接步入正题吧。 逃逸分析 首先我们需要知道,逃逸分析并不是直接的优化手段,而是通过动态分析对象的作用域,为其它优化手段提供依据的

[转帖]org.hibernate.engine.query.spi.QueryPlanCache引起内存泄漏问题排查

问题现象: 一个后台服务在运行一段时间后,观察内存一直在增加,使用MAT工具,打开堆文件分析内存泄漏情况:fileName_Leak_Suspects的index 发现如下提示: One instance of "org.hibernate.internal.SessionFactoryImpl" 

[转帖]Linux文件夹对比并提取的差分文件技巧-rsync的妙用

https://www.xitongjiaocheng.com/linux/2017/45720.html 需求 最近团队正在开发一个版本对比工具,要求是把A1文件夹与A2对比,将A2中的增量部分,输出到update文件夹中,生成增量升级包/差分包。 方案研究 实现该功能的第一反应是,分别遍历2个文

[转帖]JVM优化之调整大内存分页(LargePage)

转自:http://cjjwzs.iteye.com/blog/1059381 本文将从内存分页的原理,如何调整分页大小两节内容,向你阐述LargePage对JVM的性能有何提升作用,并在文末点明了大内分页的副作用。OK,让我们开始吧! 内存分页大小对性能的提升原理 首先,我们需要回顾一小部分计算机

[转帖]Docker配置文件/etc/docker/daemon.json详解

该文件作为Docker Engine的配置管理文件,几乎涵盖了所有docker命令行启动可以配置的参数。默认是没有的,需要手动创建 docker- daemon.json各配置详解 { "allow-nondistributable-artifacts": [], #不对外分发的产品提交的regis