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

如何在Unix中提取adafile文件第二列数值的小数点后第二位数字

解决方案:提取第二列小数点后第二位数字

完全可以用nawk(或系统默认的awk,多数Unix系统里两者等价)完成,不需要额外脚本。以下是几种直接可用的命令:

方法1:用awk的字符串定位与截取

nawk '{
    dot_pos = index($2, ".")
    if (dot_pos > 0) {
        print substr($2, dot_pos + 2, 1)
    }
}' adafile
  • index($2, "."):找到第二列中.的位置
  • substr($2, dot_pos + 2, 1):从.后第2位开始,截取1个字符,也就是小数点后第二位数字

方法2:按小数点分割字符串

nawk '{
    split($2, num_parts, ".")
    if (length(num_parts[2]) >= 2) {
        print substr(num_parts[2], 2, 1)
    }
}' adafile
  • split($2, num_parts, "."):把第二列按.分割成两部分,num_parts[1]是整数部分,num_parts[2]是小数部分
  • substr(num_parts[2], 2, 1):直接取小数部分的第二个字符

备选:用sed命令实现

如果习惯用sed,也可以用正则匹配完成:

sed -E 's/^[^[:space:]]+[[:space:]]+[^.]*\.[0-9]([0-9]).*/\1/' adafile
  • 正则逻辑:匹配行首的第一列([^[:space:]]+)、空格([[:space:]]+)、小数点前内容([^.]*\.)、小数点后第一位数字([0-9]),然后捕获第二位数字(([0-9])),最后把整行替换成捕获的数字

推荐用awk的方法,逻辑更直白,适合新手理解调试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 01:20:42