Linux - Shell - cut: 低配 awk

Posted 轩辕拾銉

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux - Shell - cut: 低配 awk相关的知识,希望对你有一定的参考价值。

  1. 概述

    1. 简述 shell 命令行工具 cut
  2. 背景

    1. 偶尔需要用 awk 来筛选特定的列

      1. awk 很是强大
      2. 但是强大的背后, 却伴随着复杂
        1. 其实同样的功能, awk 也没有复杂多少
    2. 如果是 简单的任务, cut 工具完全是可以胜任的

      1. 切割行内的特定位置
      2. 切割行内的特定字段
      3. 描述可能不是很准确, 下面会有例子

1. 准备

  1. os

    1. centos7
  2. 文件

    1. cutdemo01

      1:2:3:4:5
      1:2:3:4:5
      1:2:3:4:5
      
    2. cutdemo02

      1	2	3	4	5
      1	2	3	4	5
      1	2	3	4	5
      

2. 场景1: 切割行内的特定位置

  1. 概述

    1. 想切割行内的特定字符
  2. 命令

    1. 命令1: 切割单个字符

      # -c 表示切割行内的 特定字符
      # 下标从 1 开始
      # 如果超出范围, 会返回 空内容
      > cut -c1 cutdemo01
      1
      1
      1
      
    2. 命令2: 切割连续字符

      # 下标从 1 开始, 3 结束
      > cut -c1-3 cutdemo01
      1:2
      1:2
      1:2
      
    3. 命令3: 切割不连续字符

      # 下标从 1 开始, 3 结束, 外加第 5 个字符
      > cut -c1-3,5 cutdemo01
      1:23
      1:23
      1:23
      

3. 场景2: 切分行内特定字段

  1. 概述

    1. 类似 awk 的切割方式
  2. 命令

    1. 命令1: 切割特定分隔符下的字段

      -d 指定分隔符
      -f 指定字段
      > cut -d\':\' -f 1 cutdemo01
      1
      1
      1
      
    2. 命令2: 切割特定分隔符下的连续字段

      # -f 类似 之前的 -c
      # 结果中, 每个字段, 会用 -d 指定的分隔符隔开
      > cut -d\':\' -f 1-3 cutdemo01
      1:2:3
      1:2:3
      1:2:3
      
    3. 命令3: 切割特定分隔符下的不连续字段

      > cut -d\':\' -f1-3,5 cutdemo01
      1:2:3:5
      1:2:3:5
      1:2:3:5
      
  3. 疑问

    1. 如果要用 tab 分列, 命令行打不出 tab, 用 \\t 转义也不好使, 该怎么办
      1. 可以看看 man 命令
        1. 不带 -d, 默认就是用 tab 来分
    1. cut 只能以 一个字符 作为分隔符
      1. 所以可能会有 两种可能会坑

        1. 需要 连续多个字符, 做分隔符
        2. 同时使用 多种字符, 做分隔符
      2. 解决

        1. 使用 awk

ps

  1. ref

    1. Linux Shell脚本编程--cut命令

      1. 讲得很简单
    2. cut与awk的区别

      1. 给了点启发, 让我认识到 awk 的强大
  2. 最近魂不守舍, 不知道写啥

    1. 拿之前的东西来充数
      1. 充一篇少一篇...

以上是关于Linux - Shell - cut: 低配 awk的主要内容,如果未能解决你的问题,请参考以下文章

Linux shell command学习笔记

shell脚本的使用---cut截取数据

Linux Shell脚本入门--cut命令

Linux指令中之cut

Linux Shell脚本编程--cut命令

Linux Shell脚本编程--cut命令