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. 在iis7.5上部署asp.net mvc5

    部署mvc5跟部署mvc4是一样的,唯一不同的是需要修改一下web.config的配置 在web.config中加入一下节点即可 <system.webServer> <module ...

  2. 一条命令深度清理你的mac

    一条命令深度清理你的mac mac 用了一段时间后很快发现硬盘空间不够了,就想找一些磁盘清理的工具,但是发现居然都是收费的. 就手工操作吧.方法其实非常简单. 就一条命令, cd / du -hd 5 ...

  3. 「POJ 1741」Tree

    题面: Tree Give a tree with n vertices,each edge has a length(positive integer less than 1001). Define ...

  4. const限定符、constexpr和常量表达式------c++ primer

    编译器将在编译过程中把用到const变量的地方都替换成对应的值,为了执行这种替换,编译器必须知道变量的初始值.如果程序包含多个文件,则那个用了const对象的文件都必须能访问到它的初始值才行.要做到这 ...

  5. Mysql初识数据库《二》数据库管理软件的由来

    数据库管理软件的由来 基于我们之前所学,数据要想永久保存,都是保存于文件中,毫无疑问,一个文件仅仅只能存在于某一台机器上. 如果我们暂且忽略直接基于文件来存取数据的效率问题,并且假设程序所有的组件都运 ...

  6. CentOS 6.3下Samba服务器的安装与配置【转载】

    本文转载自 园友David_Tang的博客,如有侵权请联系本人及时删除,原文地址: http://www.cnblogs.com/mchina/archive/2012/12/18/2816717.h ...

  7. django 重写User表增加字段设置

    models中: from django.contrib.auth.models import AbstractUser lass User(AbstractUser): mobile = model ...

  8. Qt 学习之路 2(71):线程简介

    Qt 学习之路 2(71):线程简介 豆子 2013年11月18日 Qt 学习之路 2 30条评论 前面我们讨论了有关进程以及进程间通讯的相关问题,现在我们开始讨论线程.事实上,现代的程序中,使用线程 ...

  9. 关于python中的round()和javascript中的round()的比较

    ps:python的round()和javascript的round()的比较: javascript:Math.round():正常的标准舍入,就像我们学的数学课本上面的规则 python:pyth ...

  10. loj 2038 / 洛谷 P4345 [SHOI2015] 超能粒子炮・改 题解

    好玩的推式子 题目描述 曾经发明了脑洞治疗仪与超能粒子炮的发明家 SHTSC 又公开了他的新发明:超能粒子炮・改--一种可以发射威力更加强大的粒子流的神秘装置. 超能粒子炮・改相比超能粒子炮,在威力上 ...