按列字符串分割的Linux命令
按列字符串分割的Linux命令详细介绍
在 Linux 中按列分割字符串(或文本列),常用命令有 cut、awk 和 sed,以下是具体用法和典型场景:
一、按固定分隔符分割(如逗号、制表符)
1.
cut 命令(简单高效)
场景:分割 CSV 文件、固定分隔符的列
语法:cut -d<SEP> -f<COLUMN(S)>
-d:指定分隔符(默认制表符)-f:指定列号(支持范围,如2-5)
示例:
bash
-d, data.csv
-d -f1,3 data.txt
2.
awk 命令(灵活处理)
场景:复杂分隔符、多条件分割、去除引号等
语法:awk -F<SEP> '{print $COLUMN}'
-F:指定分隔符(支持正则表达式)
示例:
bash
-F data.csv
data.txt
二、按固定宽度分割(无分隔符)
1.
cut 命令(指定字符范围)
语法:cut -c<START>-<END>
- 直接按字符位置分割(从第 1 列开始)
示例:
bash
-c3-5 fixed_width.txt
2.
awk 命令(字符位置索引)
示例:
bash
fixed_width.txt
三、按模式分割(正则表达式)
sed 命令(提取特定模式内容)
场景:从列中提取子字符串(如邮箱、IP)
示例:
bash
四、典型场景对比
| 场景 | 推荐命令 | 示例命令 |
|---|---|---|
| CSV 文件分割第 2 列 | cut |
cut -d, -f2 data.csv |
| 去除列中引号 | awk |
awk -F, '{gsub(/"/,"",$2); print $2}' |
| 固定宽度列(第 5-8 字符) | cut |
cut -c5-8 file.txt |
| 复杂分隔符(混合空格 / 制表符) | awk |
awk '{print $NF}'(取最后一列) |
总结
- 简单分割:优先用
cut(语法简洁)。 - 复杂处理:用
awk(支持逻辑判断、函数)。 - 模式匹配:用
sed(正则表达式提取)。
可通过管道(|)组合命令,例如:
bash
data.csv -d,
912 data.csv | , |