Linux文本处理工具

Linux中熟练的使用文本处理工具非常的重要, 因为Linux在设计的时候是采用一切皆文件的哲学的, 甚至连计算机中的配置也都使用伪文件系统来表示, 要查询里面的内容就是对文件进行操作, 所以学会使用文件处理工具事半功倍。而在一切皆对象的Windows中, 因为对象封装了所有的操作, 包括显示标准输出的结果, 使用过powershell的人应该知道, 标准输出流显示的结果, 也就是控制台上显示的结果也都是对象, 而不是单纯的文本, 我们可以获取这个对象并调用器API对他进行更近一步的操作, 这个可以说是Windows平台上的一个优点

find

  • -name
  • -type: f, d
  • -maxdepth: 查找的深度, 也就是目录递归的深度, 为1就是在当前目录查找
  • -regex: 正则表达式匹配, 是全路径匹配
  • -iregex: 忽略大小写的正则表达式匹配
  • -delete: 删除找到的文件或者目录
  • -print: 打印出结果, 默认就是这个选项, 打印出来的结果默认是\n分隔的
  • -print0: 将打印出来的结果使用\0进行分隔
  • -exec {} ;
  • -atime: 访问时间, 单位是天, -atime 3 表示3天内访问
  • -mtime: 修改内容时间
  • -ctime: 修改元数据时间, 只要出发了atime或者mtime, ctime一定会改变
  • -amin: 和atime一样, 只是单位为分钟
  • -mmin: 和mtime一样, 只是单位为分钟
  • -cmin: 和ctime一样, 只是单位为分钟
  • -user
  • -perm
  • -newer
  • -nouser
  • -nogroup
  • -size: -size +5M -size -10M, 表示在5-10M的文件或则目录
  • 分组使用( ): find . ( -name '.txt' -o -name '.pdf' ) -print

grep

  • -e: 多模式匹配
  • -c: 计数
  • -o: 只显示查找到的结果, 在没有指明-o选项时显示的是匹配到一行
  • -v: 只输出没有匹配到的行
  • -n: 打印行号
  • -i: 忽略大小写
  • -l: 只打印文件名
  • -R: 递归

xargs

  • 将输入的数据转换为特定的命令行参数, 与普通的如ls | grep -n 'python'不同, 这里的grep通过管道接受到的是输入的数据不是命令行参数

sort

  • -k: 指定第几列进行排序
  • -d: 按照字典进行排序
  • -n: 按照数据进行排序
  • -r: 逆序

uniq

  • -c: 统计
  • -d: 打印重复行
  • -u: 去掉重复行

wc

  • -l: 行数
  • -w: 单词书
  • -c: 字符数

sed(文本替换利器)

  • -e: 多模式匹配, sed -e '/^$/d' -e '///.*/d' file 删除空白行和注释行
  • s: 表示replace
  • g: 表示全局
  • -i: 表示inplace
  • sed 's/text/replacetext/' file
  • sed 's/text/replacetext/g/' file # 全局替换
  • sed -i 's/text/replacetext' file # 直接修改到原文件中
  • sed '/^$/d' file 删除空白行
  • sed '///.*$/d' file 删除C语言的注释
  • sed '/^#.*$/d' file 删除Python注释
  • sed 's/[a-z]+/\U&/' file 转大写, 只在Linux中有效, 在macOS上无效
  • sed 's/[A-Z]+/\L&/' file 转小写, 在macOS上无效

paste(文本合并, 与cut相反)

  • 将两个文本按照列合并
  • -d: 指明合并之后使用什么分隔

tr(是简化版本的sed, 当tr不能完成的时候使用sed, 因为tr对正则表达式支持不好)

  • -s: 压缩字符, tr -s '\n' file, 遇到连续的两个\n将其压缩成为一个, 功能是删除空行
  • -c: 取补集, tr -c 'a-z' 则取的就是在a-z之外的
  • -d: 删除匹配的

总结

  • 开发者常用的是sed, tr, find 和 grep
  • 在处理文本替换的时候使用sed, tr在加密的时候使用cat /dev/urandom | head -c 64 | tr -d -c 'a-zA-Z0-9_'

Linux文本处理工具的更多相关文章

  1. Linux文本编译工具VIM详解

    Linux文本编译工具VIM详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.VIM概述 1>.vim简介 >.vi: 全称Visual editor,即文本编辑 ...

  2. Linux文本查看工具

    文本查看工具 cat 特点: 不能用来看二进制文件 选项: -A: 显示不可见字符 cat支持标准输入: cat > aa.txt ---键盘作为标准输入,输出的结果重定向文件中去了 cat & ...

  3. Linux 文本处理工具grep,sed,awk

    grep.sed和awk都是文本处理工具,虽然都是文本处理工具单却都有各自的优缺点,一种文本处理命令是不能被另一个完全替换的,否则也不会出现三个文本处理命令了.只不过,相比较而言,sed和awk功能更 ...

  4. linux 文本分析工具---awk命令(7/1)

    awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各 ...

  5. linux文本处理工具篇

    一.常用简单工具 cat [OPTION]... [FILE]...  -E:显示行的结束符$ -n:对显示出的每一行进行编号. -A:显示所有控制符 -s:压缩连续空行为一行 more:分页查看文件 ...

  6. Linux文本处理工具——Sed

    sed:数据流编辑器: awk:报告文本的生成器 sed 基本用法:(Stream EDitor) Stream 流 EDitor 编辑器 行编辑器 全屏编辑器:vi/vimsed:内存空间(模式空间 ...

  7. linux文本处理工具及正则表达式

    cat命令:查看文本内容 cat [选项]... [文件]... -E    显示行结束符 -n    显示文本内容时显示行号 -A    显示所以控制符 -b    非空行编号 -s     压缩连 ...

  8. linux文本处理工具-1

    文件内容: cat ,more,less 文件截取:head,tail 按列抽取:cut 排序和统计:sort,wc ----------------------------------------- ...

  9. Linux 文本处理工具(grep sed awk )

    ^test: 以test开头; test$: 以test结尾: ^$: 表示空行,不是空格: . :代表且只代表任意一个字符(其他功能:当前目录,加载文件): \ : 代表转义字符,表示特殊字符: * ...

随机推荐

  1. 使用C#代码发送邮件,不完整的demo

    作为一只入行不久的小菜鸟,最近接触到利用C#代码发送邮件,做了一点小的demo练习.首先,需要配置,这边我做的是QQ邮箱的相关的练习,练习之前,首先应该解决的问题肯定是关于服务器的配置,这边偷一个懒, ...

  2. 复制构造函数被调用的三种情况------新标准c++程序设计

    1.当用一个对象去初始化同类的另一个对象时,会引发复制构造函数被调用.例如,下面的两条语句都会引发复制构造函数的调用,用以初始化c2. C c2 (c1); C c2=c1; 这两条语句是等价的.注意 ...

  3. CentOS7 搭建 python pypi 私有源

    (1)寻找可用的同步源,我选择的是中科大的源:http://rsync.mirrors.ustc.edu.cn (2)创建数据同步目录:/root/pypi(如果想存放到其他目录,可以通过软链接的方式 ...

  4. Java面向对象之多态(成员访问特点) 入门实例

    一.基础概念 多态的调用方式在子父类中的特殊体现. 1.访问成员变量特点: 当子父类中出现同名成员变量时. 多态调用时,编译和运行都参考引用型变量所属的类中的成员变量. 即编译和运行看等号的左边. 2 ...

  5. MongDB from execCommand not master

    count failed: not master{ , "errmsg" : "not master" } at src/mongo/shell/query.j ...

  6. Spring boot redis自增编号控制 踩坑

    近段期间,公司 接手一个订单号生成服务,规则的话已经由项目经理他们规定好了,主要是后面的四位数代表的关于当前订单号已经执行第几个了.而这里面有一个要求就是支持分布式.为了实现这个东西,刚开始我使用了r ...

  7. 3.1、Factorization Machine模型

    Factorization Machine模型 在Logistics Regression算法的模型中使用的是特征的线性组合,最终得到的分隔超平面属于线性模型,其只能处理线性可分的二分类问题,现实生活 ...

  8. IntelliJ IDEA 把Maven项目导出可执行jar包

    2017年04月05日 14:05:08 waterimelon 阅读数:1574 标签: intellij ideamaven 更多 个人分类: idea   第一步  第二步  第三步 

  9. python环境搭建以及pycharm的安装

    要实现python自动化,环境和IDE都是必须的.我选择的是python3.4.4版本以及pycharm社区版.      资源链接:https://pan.baidu.com/s/1hRqyRe3J ...

  10. Moving docker images location to different partition

    By default docker will put all the data including images under /var/lib/docker(At least on Debian). ...