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

Bash:sed命令复杂示例——提取文件指定字段内容

没问题,我来帮你搞定这个文本提取需求!针对你给出的两列空格分隔文件,我们可以用命令行工具快速实现提取目标内容,下面给你两种常用的方法:

方法一:使用awk(推荐,逻辑更清晰)

awk处理列数据非常顺手,我们可以通过正则捕获chr后的数字,再判断是否在1-22范围内,满足条件就输出数字和第二列内容:

awk '{
    # 匹配第一列中chr开头后接数字的部分,把数字存入arr数组
    if (match($1, /^chr([0-9]+)\./, arr) && arr[1] >= 1 && arr[1] <= 22) {
        print arr[1], $2
    }
}' 你的文件名.txt

把上面的你的文件名.txt替换成你实际的文件路径就行,如果是从标准输入读取(比如直接粘贴内容),可以直接运行命令后输入内容,按Ctrl+D结束输入。

方法二:使用sed

如果习惯用sed,也可以通过正则匹配和替换来实现:

sed -nE '/^chr([1-9]|1[0-9]|2[0-2])\./s/^chr([1-9]|1[0-9]|2[0-2])\..* ([0-9]+)$/\1 \2/p' 你的文件名.txt

这个命令的逻辑是:先筛选出chr后接1-22数字的行,再把整行替换成我们需要的数字和第二列内容,最后打印结果。

用你给出的示例内容测试的话,输出结果会是:

1 100880328
1 10566215
1 110198129
1 114445880
1 118141492
1 120257110
1 121280613
1 121287994
1 145604302

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:25:38