- 概述
- 简述 shell 命令行工具 cut
- 背景
- 偶尔需要用 awk 来筛选特定的列
- awk 很是强大
- 但是强大的背后, 却伴随着复杂
- 其实同样的功能, awk 也没有复杂多少
- 如果是 简单的任务, cut 工具完全是可以胜任的
- 切割行内的特定位置
- 切割行内的特定字段
- 描述可能不是很准确, 下面会有例子
- 偶尔需要用 awk 来筛选特定的列
1. 准备
- os
- centos7
- 文件
cutdemo01
1:2:3:4:5 1:2:3:4:5 1:2:3:4:5
cutdemo02
1 2 3 4 5 1 2 3 4 5 1 2 3 4 5
2. 场景1: 切割行内的特定位置
- 概述
- 想切割行内的特定字符
命令
命令1: 切割单个字符
# -c 表示切割行内的 特定字符 # 下标从 1 开始 # 如果超出范围, 会返回 空内容 > cut -c1 cutdemo01 1 1 1
命令2: 切割连续字符
# 下标从 1 开始, 3 结束 > cut -c1-3 cutdemo01 1:2 1:2 1:2
命令3: 切割不连续字符
# 下标从 1 开始, 3 结束, 外加第 5 个字符 > cut -c1-3,5 cutdemo01 1:23 1:23 1:23
3. 场景2: 切分行内特定字段
- 概述
- 类似 awk 的切割方式
- 命令
命令1: 切割特定分隔符下的字段
-d 指定分隔符 -f 指定字段 > cut -d':' -f 1 cutdemo01 1 1 1
命令2: 切割特定分隔符下的连续字段
# -f 类似 之前的 -c # 结果中, 每个字段, 会用 -d 指定的分隔符隔开 > cut -d':' -f 1-3 cutdemo01 1:2:3 1:2:3 1:2:3
命令3: 切割特定分隔符下的不连续字段
> cut -d':' -f1-3,5 cutdemo01 1:2:3:5 1:2:3:5 1:2:3:5
- 疑问
- 如果要用 tab 分列, 命令行打不出 tab, 用 \t 转义也不好使, 该怎么办
- 可以看看 man 命令
- 不带 -d, 默认就是用 tab 来分
- 可以看看 man 命令
- 如果要用 tab 分列, 命令行打不出 tab, 用 \t 转义也不好使, 该怎么办
- 坑
- cut 只能以 一个字符 作为分隔符
- 所以可能会有 两种可能会坑
- 需要 连续多个字符, 做分隔符
- 同时使用 多种字符, 做分隔符
- 解决
- 使用 awk
- 所以可能会有 两种可能会坑
- cut 只能以 一个字符 作为分隔符
ps
- ref
- Linux Shell脚本编程--cut命令
- 讲得很简单
- cut与awk的区别
- 给了点启发, 让我认识到 awk 的强大
- Linux Shell脚本编程--cut命令
- 最近魂不守舍, 不知道写啥
- 拿之前的东西来充数
- 充一篇少一篇...
- 拿之前的东西来充数