zoukankan      html  css  js  c++  java
  • Linux文本处理工具

    Linux文本处理工具

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

    find

    • -name
    • -type: f, d
    • -maxdepth: 查找的深度, 也就是目录递归的深度, 为1就是在当前目录查找
    • -regex: 正则表达式匹配, 是全路径匹配
    • -iregex: 忽略大小写的正则表达式匹配
    • -delete: 删除找到的文件或者目录
    • -print: 打印出结果, 默认就是这个选项, 打印出来的结果默认是 分隔的
    • -print0: 将打印出来的结果使用进行分隔
    • -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 ' ' file, 遇到连续的两个 将其压缩成为一个, 功能是删除空行
    • -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_'
  • 相关阅读:
    JVM运行内存分配和回收
    关于评审--从思想到落地
    从浏览器或者Webview 中唤醒APP
    控制台的艺术(附原理实现)
    深入研究嵌入式web服务器的视频监控应用
    css中url的路径含义及使用
    epoll
    C++中智能指针的设计和使用
    wget命令的使用
    UPNP
  • 原文地址:https://www.cnblogs.com/megachen/p/9977028.html
Copyright © 2011-2022 走看看