zoukankan      html  css  js  c++  java
  • Linux 入门记录:十七、Linux 命令行文本/文件处理工具

    一、文件浏览

    cat      查看文件内容
    more     以翻页形式查看文件内容(只能向下翻页)
    less     以翻页形式查看文件内容(可以上下翻页)
    head     查看文件的头几行(默认10行)
    tail     查看文件的尾几行(默认10行)
    

      

    二、正则匹配打印行

    命令 grep 用来全局匹配正则表达式并打印所在行:

    grep 'mingc' /etc/passwd        在该文件中匹配mingc的用户信息并打印所在行
    find / -user mingc | grep ".*.png$"  查找mingc的所有png文件(管道操作)

    常用参数:

    -i       搜索时忽略大小写
    -n       显示结果所在行数
    -v       输出不匹配该正则的行(类似于一个取反操作)
    -An      在输出的时候包含结果所在行之后的指定n行
    -Bn      在输出的时候包含结果所在行之前的指定n行
    

      

    三、文本切割打印字段

    命令 cut 常用来切割文本行、打印某些字段:

    cut -d:fl /etc/passwd    打印passwd文件中冒号分割的第1个字段(用户名)(列出来多行的用户名)
    grep mingc /etc/passwd | cut -d: -f3   打印mingc的用户信息汇总冒号分割的第3个字段(uid)

    常用参数:

    -d       指定分割字符(默认Tab)
    -f       显示特定序号的字段(从1开始)
    -c       显示特定范围字符(从第几个到第几个)

    示例:

    grep mingc /etc/passwd | cut -d: -f3     打印mingc的用户信息中冒号分割的第3个字段(uid)
    grep mingc /etc/passwd | cut -d: -f6,7   打印mingc的用户主目录和登录Shell
    
    grep mingc /etc/passwd | cut -c1-5       打印mingc的用户信息中第1~5个字符
    grep mingc /etc/passwd | cut -c1-        打印mingc的用户信息中第1个字符之后的所有字符
    grep mingc /etc/passwd | cut -c-5        打印mingc的用户信息中第5个字符之前的所有字符
    

      

    四、文本统计

    命令 wc 用于统计文件的行数、单词数、字符数等:

    wc test.md

    不带参数时默认输出一行,字段格式为:

    行数 单词数 字符数 文件名

    常用参数:

    -l       只统计行数
    -w       只统计单词数
    -c       只统计字节数
    -m       只统计字符数
    

      

    五、文本排序

    命令 sort 用于对文件内容进行排序(也可以对STDIN进行排序):

    sort filename

    常用参数:

    -r        逆向(倒序)排序
    -n        基于数字排序
    -f        忽略大小写
    -u        去重复(剔除重复行)
    -t<分割符> 指定分隔符(一般配合-k参数使用,单纯分割毫无意义)
    -k n      当指定分割符时,按照第n个字段进行排序(序号n从1开始)

     -r、-n、-t、-k 参数可以配合使用:

    上图中,把 test.md 文件内容的每行按照冒号分割、基于数字对第3个字段进行逆向排序。

    六、剔除重复行

    命令 sort -u 可以剔除文件内容重复行,但副作用是进行了排序。

    命令 uniq 可以剔除文件内容(相邻的)重复行:

    七、文本比较

    命令 diff 用来比较两个文件的区别:

    diff test1.md test2.md

    常用参数:

    -i       忽略大小写
    -b       忽略空格字符
    -u       统一显示比较信息(一般用来生成patch文件)

    示例:

    diff -u old.md new.md > update.patch   把文件的更新信息生成到补丁文件
    

    八、拼写检查

    命令 aspell 用来显示检查英文拼写:

    aspell check filename
    aspell list < filename
    

    (CentOS 6.9 64位系统里似乎没有这个命令,也不常用,不详述)

    九、字符转换

    命令 tr 用于从标准输入对字符进行转换处理。如果处理来自文件的输入,需要重定向。

    删除关键字:

    tr -d 'keyword' < filename

    转换大小写:

    tr 'a-z' 'A-Z' < filename

    十、流式编辑——搜索替换

    sed 命令是一种可以配合正则表达式使用的流式编辑工具。处理文件流时,把当前处理的行存储在临时缓冲区,称“模式空间”(pattern space),然后处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有发生改变,除非使用重定向存储输出。sed 命令主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。

    语法:

    sed [options] 'command' file(s)
    sed [options] -f scriptfile file(s)

    常用参数 options:

    -e<script>   指定一个script来处理文本
    -f<script>   指定一个script来处理文本
    -n           仅显示处理后的结果

    常用命令 command:

    d    删除行
    D    删除第一行
    s    替换指定字符
    h    拷贝内容到缓冲区
    H    追加内容到缓冲区
    g    获取缓冲区的内容,替换当前文本
    G    获取缓冲区的内容,追加到当前文本后面
    p    打印行
    P    打印第一行
    q    退出sed

    示例:

    sed 's/linux/unix/g' filename      s表示搜索替换,linux替换为unix,g表示全局替换,filename目标文件
    sed 'l,50s/linux/unix/g' filename  1到50行进行全局替换
    sed -e 's/linux/unix/g' -e 's/ming/mingc/g' filename  -e参数替换多个
    sed -f script filename             指定一个script来处理文件

    相关链接:sed 命令 - Linux 命令大全

  • 相关阅读:
    go语言时间格式化----go语言学习笔记(二)
    go语言模拟post请求----go语言学习笔记(一)
    beego框架配置mysql
    django---request在url中传值请求其他服务的get请求,获取请求头
    nginx+uwsgi+ubuntu 部署django
    集成jenkins自动安装apk文件
    python数据可视化之flask+echarts(二)
    httpd 2.2 实验小结
    CentOS 6安装详解及PXE 安装
    有关安全知识点及实验小结
  • 原文地址:https://www.cnblogs.com/mingc/p/7616206.html
Copyright © 2011-2022 走看看