簡體   English   中英

用awk或sed在兩列之間進行減法

[英]subtraction between two columns with awk or sed

我有一些文本文件。 我需要在每個文件的第二和第四列之間進行減法。 減去的值應作為第五列打印到原始文件中。 如何使用awk或sed執行此操作?

HII 62.0    HII 35.1
MEE 21.3    MEE 21.3
GLL 42.3    GLL 18.5
ASS 105.9   ASS 105.9
RRG 65.6
GLL 48.3
SES 83.5    

Desired output

HII 62.0    HII 35.1   26.9
MEE 21.3    MEE 21.3    0
GLL 42.3    GLL 18.5   23.8
ASS 105.9   ASS 105.9   0
RRG 65.6
GLL 48.3
SES 83.5

如果第三和第四列為空白,則無需減去。

awk 'NF == 2 { print }
     NF == 4 { print $0, $2 - $4 }'

所有這些都可以放在一條線上,但是當它分布在兩條線上時,它會更清楚地顯示正在做什么。

如果要進一步控制格式,可以使用printf()而不是print

清理數據中的尾隨空格后,它會產生:

HII 62.0    HII 35.1 26.9
MEE 21.3    MEE 21.3 0
GLL 42.3    GLL 18.5 23.8
ASS 105.9   ASS 105.9 0
RRG 65.6
GLL 48.3
SES 83.5

這可能適合您(GNU sed和Bash):

sed -ri '/^\S+\s+(\S+)\s+\S+\s+(\S+)/s//echo "&\t$(echo \1-\2|bc)"/e' file

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM