如何用Linux快捷方式计算文件中两列差值并输出指定结果
用awk快速处理文本列计算需求
这事儿交给awk就对了,它天生就是用来处理这类文本列操作的工具,一行命令就能搞定:
awk '{print $1, $3 - $2, $4, $5, $6, $7}' your_input_file > output_file
命令细节解释:
awk会逐行读取你的输入文件,自动按空格分割每一行的内容$1保留第一列的scaffold编号内容$3 - $2自动计算第3列与第2列的数值差,用这个差值替换掉原来的两列$4到$7直接保留原文件中第4到第7列的所有内容- 最后通过
>把结果输出到新的output_file里,不会修改原文件,更安全
如果需要直接覆盖原文件(记得先备份!):
如果你不想生成新文件,想直接修改原文件,可以借助sponge工具(需要先安装moreutils包,比如Debian/Ubuntu用apt install moreutils,RHEL/CentOS用yum install moreutils):
awk '{print $1, $3 - $2, $4, $5, $6, $7}' your_input_file | sponge your_input_file
要是没有sponge,也可以用临时文件中转的方式:
awk '{print $1, $3 - $2, $4, $5, $6, $7}' your_input_file > temp_file && mv temp_file your_input_file
用这个命令处理你给出的示例内容,完全能得到你想要的输出格式,不管文件多长都能高效处理~
内容的提问来源于stack exchange,提问作者Alex Trevylan
相关产品推荐
相关产品推荐

