You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Awk提取Linux中以PC开头的多列患者数据?

提取指定列的正确Awk实现方法

针对你的需求——保留ID_REF列,同时提取所有格式为PC****(PC后接4位病例号)的列,以下是正确的Awk命令实现:

命令示例(假设数据为制表符分隔)

BEGIN { FS="\t"; OFS="\t" }
NR==1 {
    # 遍历表头,记录需要保留的列索引
    for (i=1; i<=NF; i++) {
        if ($i == "ID_REF" || $i ~ /^PC[0-9]{4}$/) {
            keep[i] = 1
            cols[++n] = i
        }
    }
}
# 输出所有行的目标列
{
    for (i=1; i<=n; i++) {
        printf "%s%s", $(cols[i]), (i<n ? OFS : "\n")
    }
}

关键说明

  1. 分隔符设置:BEGIN块中指定FS(输入分隔符)和OFS(输出分隔符)为制表符,如果你的数据是逗号分隔,只需改为FS=","; OFS=","。
  2. 表头处理:第一行(NR==1)遍历所有列名,匹配ID_REF或PC开头且后接4位数字的列,将这些列的索引存入数组cols,保证输出列顺序与原表一致。
  3. 数据行输出:后续每一行按照cols数组中记录的索引,依次输出对应列,确保只保留目标列。

执行方式

将上述命令保存为extract_cols.awk,然后运行:

awk -f extract_cols.awk your_data_file.txt > output.txt

内容的提问来源于stack exchange,提问作者Ryan Fuller

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 09:12:32