Linux中如何从文件中精准提取所需内容?
Linux下提取CSV指定列的实现方法
针对你的需求,下面是几种Linux常用工具的操作方案:
需求1:仅提取第一列(输出123456789012)
- 使用
cut命令:
cut -d',' -f1 filename
说明:-d','指定逗号为字段分隔符,-f1表示提取第1列内容。
- 使用
awk命令:
awk -F',' '{print $1}' filename
说明:-F','设置分隔符为逗号,$1代表当前行的第一列。
- 使用
sed命令:
sed 's/,.*//' filename
说明:将第一个逗号及后续所有内容替换为空,仅保留开头到第一个逗号前的部分。
需求2:提取第一列和最后一列(输出123456789012 test3)
- 使用
awk命令(最通用,适配任意列数):
awk -F',' '{print $1, $NF}' filename
说明:$NF是awk内置变量,代表当前行的最后一列,不管总列数多少都能正确提取。
- 使用
sed命令:
sed -E 's/^([^,]+),.*,([^,]+)$/\1 \2/' filename
说明:用正则匹配开头的非逗号内容(第一列)、中间任意内容、结尾的非逗号内容(最后一列),再将匹配结果替换为两部分用空格分隔的形式。
- 若确定是固定5列,也可组合
cut和tr命令:
cut -d',' -f1,5 filename | tr ',' ' '
说明:先提取第1、5列,再用tr把分隔用的逗号替换成空格。
内容的提问来源于stack exchange,提问作者Marco Billi
相关产品推荐
相关产品推荐

