如何快速提取data.txt第2、4、5列?

方法1:使用 cut 命令(简单分隔符场景)

适用场景:列由固定分隔符(如逗号、制表符)分隔,且列位置连续。
命令格式:

cut -d '分隔符' -f 列序号列表 文件名

示例:

# 提取第1到第3列(分隔符为制表符,默认)
cut -f 1-3 data.txt

注意:

  • -d 指定分隔符(默认制表符),-f 指定列号(支持1,3,5或2-5格式)。
  • 缺点:无法处理空格等不固定分隔符。

方法2:使用 awk 命令(灵活处理复杂格式)

适用场景:分隔符不固定、需条件过滤或非连续列。
命令格式:

awk -F '分隔符' '{print $列1 $列2 ...}' 文件名

示例:

# 提取第1列和第3列(分隔符为空格或制表符)
awk '{print $1, $3}' data.txt
# 提取第2列和第4列(分隔符为冒号)
awk -F ':' '{print $2, $4}' /etc/passwd
# 结合条件:仅当第3列大于10时输出第1列和第2列
awk '$3 > 10 {print $1, $2}' data.csv

优势:

  • -F 支持正则表达式(如-F "[,:]"表示逗号或冒号)。
  • 列号用加数字表示($1为第一列),OFS变量可自定义输出分隔符(如awk 'BEGIN{OFS=";"} {...}')。

方法3:使用 paste + 循环(合并多个命令的输出)

适用场景:需从不同命令或非连续列组合数据。
示例:

# 合并ls命令的第1列(文件名)和第5列(大小)
ls -l | awk '{print $1}' > col1.txt
ls -l | awk '{print $5}' > col5.txt
paste col1.txt col5.txt

简化写法:

paste <(ls -l | awk '{print $1}') <(ls -l | awk '{print $5}')

方法4:使用 datamash 工具(结构化数据处理)

适用场景:需高级表格操作(需安装:sudo apt install datamash)。
示例:

# 提取第1列和第3列(分隔符为空格)
datamash -t ' ' cut 1,3 data.txt

总结与建议

方法 最佳场景 优势
cut 简单分隔符、连续列 语法简洁,执行速度快
awk 复杂分隔符、条件过滤、非连续列 功能强大,灵活度高
paste 合并多命令输出 适合管道操作
datamash 结构化数据的高级操作 支持统计、排序等扩展功能

安全提示:

  • 处理用户输入文件时,避免使用-i原地修改参数,建议先备份。
  • 对未知文件先用head预览结构(如head -n 5 file)。

引用说明:
本文方法参考GNU Coreutils官方文档(cut、awk)及Linux man手册,实践前建议通过man cut或man awk查看系统帮助。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/8954.html

赞 (0)
酷番叔酷番叔
上一篇 2025年7月28日 01:55
下一篇 2025年7月28日 02:11

相关推荐

  • linux如何改当前用户名和密码错误

    Linux 中,用 sudo 提权后,用 usermod 改

    2025年8月14日
    25600
  • Linux cat命令如何读取文件指定行数?

    Linux系统中的cat命令是常用的文本查看工具,其核心功能是连接(concatenate)并显示文件内容,默认情况下会输出整个文件的所有行,在实际操作中,我们常需要只查看文件的指定行(如第3行、第5-10行等),而cat命令本身并不支持直接按行号筛选,需结合其他文本处理工具实现,本文将详细介绍通过cat搭配s……

    2025年9月28日
    31200
  • linux下如何退出python

    在Linux环境下使用Python时,无论是交互式编程还是脚本开发,掌握正确的退出方法都是基础且重要的技能,不同场景下(如交互式REPL、脚本执行、多线程环境等)的退出方式存在差异,本文将详细梳理Linux下退出Python的各种方法,并分析其适用场景及注意事项,交互式环境(REPL)中的退出方法Python交……

    2025年8月23日
    20100
  • 你更愿意要钱还是自由?

    挂起进程的原理Linux通过信号(Signal)控制进程状态:SIGSTOP (19):强制暂停进程(不可被进程忽略),SIGCONT (18):恢复被暂停的进程,SIGTSTP (20):终端发出的暂停信号(可被进程捕获处理),操作步骤查找目标进程ID(PID)使用 ps 或 pgrep 定位进程:ps au……

    2025年7月31日
    25900
  • 在Linux操作系统中如何查看系统全部重启的详细历史记录?

    在Linux系统管理中,掌握系统重启记录的查看方法至关重要,无论是排查故障、分析系统稳定性,还是审计系统操作,都需要准确获取重启时间、原因及相关日志信息,Linux系统通过多种机制记录重启事件,本文将详细介绍不同场景下查看重启记录的实用方法,涵盖命令工具、日志文件及过滤技巧,帮助用户根据需求选择合适方案,使用l……

    2025年9月9日
    37800

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信