zoukankan      html  css  js  c++  java
  • 《linux 字符处理》- grep/sort/uniq/tr/paste/sed/awk

    一:基本

    • 字符处理主要是文本的搜索和处理。
    • 搜索也主要使用到了 管道 作为媒介。

    二: grep 搜索文本

      - 基本语法 (可以在文本中使用正则进行搜索)

        - grep [-incv] '文本' 文件

          - i 不区分大小写

          - c 匹配行数

          - n 输出匹配行数

          - v 反向匹配

      - 正则使用

        - grep '^[123]' index.txt  (搜索在开头为123的行)

    三: sort 排序

      - 基本语法

        - sort [-ntkr] 文件名

          - n 数字排序

          - t 指定分隔符

          - k 指定第几列

          - r 反向排序

      - 指定排序

        - -t -k 可以指定排序方式

        - 比如这里,我新建了一个 sort.txt 

        • [mttyk]$ cat sort.txt
          b:1-3
          a:2-2
          f:4-1
          h:8-9
          d:3-6
          h:8-9
          g:6-7

        - 在没有指定条件时候,sort 默认第一个字符正序

        • [mttyk]$ sort sort.txt
          a:2-2
          b:1-3
          d:3-6
          f:4-1
          g:6-7
          h:8-9
          h:8-9

        - 如果想使用第二例的数字来进行排序的话

        • [mttyk]$ sort -t ":" -k 2 sort.txt
          b:1-3
          a:2-2
          d:3-6
          f:4-1
          g:6-7
          h:8-9
          h:8-9

          -t 等于切割了两组
          1组 切割符 第二组
          b : 1-3
          a : 2-2
          ......

    四: uniq 删除重复内容

      - 基本语法

        - uniq [-ic] 文件

          - i 忽略大小写

          -c 显示重复行数

      - 注意

        - uniq 语法应该是和 sort 一起使用的,因为不连续的重复数据,uniq 是无法删除

        - 所以需要 sort 排序后删除/统计

      • 文件
            h:8-9
            d:3-6
            h:8-9
        
        直接 uniq 删除重复
            [mttyk]$ uniq sort.txt
            h:8-9
            d:3-6
            h:8-9
        无法删除
        
        排序后 uniq 删除重复
            [mttyk]$ sort sort.txt | uniq
            d:3-6
            h:8-9

    五: tr (文本转换/删除)

       - tr 只能在管道中处理字符,源文件并不能修改

      - 基本语法 (支持正则)

        - 删除指定字符  tr -d "[1-9]"

        - 转换指定字符 tr "[a-z]" "[A-Z]"

      - 替换字符时,文本中有多少个字符,就只能替换多少个字符

    六:sed (文本处理) ( -i 可改变源文件)

      - 基于 行  的 文本处理工具

      - 基本语法

        - sed [options] 'commend' file

      - 删除操作 (/d)

        - 删除指定行    sed '1d' index.txt (删除 index.txt 文件下的第1行)

        - 删除指定区间 sed '1,2d' index.txt (删除 index.txt 文件下的第1-2行)

        - 删除最后一行 sed '$d' index.txt (删除 index.txt 文件下的最后一行)

        - 删除空行       sed '/^$/d' index.txt (删除 index.txt 文件下的空行)

      - 查找替换 (s/)

        - 部分替换 sed 's/L/l/1' index.txt (替换 index.txt 文件下的L为l) (只替换一行中的第一个)

        - 全部替换 sed 's/L/l/g' index.txt (替换 index.txt 文件下的L为l) (一行不管有多少个,全部替换)

     

      - 字符替换 (y/)

        - 批量替换 sed 'y/abcd/ABCD/' index.txt (替换 index.txt 文件下的a为A, b为B, c为C,d为D) 

      - 文本插入 (i 匹配行后插入) (a 匹配行前插入)

        - 指定行插入 sed '2 i insert' index.txt  (在 index.txt 文件 第2行 插入文本) 

    七:awk (文本处理)

      - 基于 列 的文本处理工具

      - 基本语法

        - -F 指定分隔符

      - 基本操作

        - 查看文本域数量

          - awk '{print NF}' index.txt  (查看 index.txt 文件的切割域) (内部变量 NF 实现)

        - 求和

          - awk 'BEGIN{total=0}{total+=$1}END{print total}' index.txt

          - awk 'BEGIN{total=0;num=0}{num+=$1;total+=1}END{print total/num}' index.txt

  • 相关阅读:
    openldap
    Java实现 洛谷 P1200 [USACO1.1]你的飞碟在这儿Your Ride Is He…
    Java实现 洛谷 P1200 [USACO1.1]你的飞碟在这儿Your Ride Is He…
    Java实现 洛谷 P2141 珠心算测验
    Java实现 洛谷 P2141 珠心算测验
    Java实现 洛谷 P2141 珠心算测验
    Java实现 洛谷 P2141 珠心算测验
    Java实现 洛谷 P2141 珠心算测验
    Java实现 洛谷 P1567 统计天数
    Java实现 洛谷 P1567 统计天数
  • 原文地址:https://www.cnblogs.com/25-lH/p/10388332.html
Copyright © 2011-2022 走看看