awk の 2 行間で同じ列を減算します。

awk の 2 行間で同じ列を減算します。

最初の行から2番目の行を減算したいのですが。ファイルはそうです

一時ファイル

A B 1 2 3 4 
C D 9 8 7 6

希望の出力は

8 6 4 2

awkではどうしますか?

1つの列のみを出力しました。

awk '{$temp=$3-prev3; prev3=$3}{print $temp}'

ベストアンサー1

ソリューションアッ

awk '
    NR==1 {split($0,a)}
    NR==2 {split($0,b)}
    END {for(i=1;i<=NF;i++) printf "%d ", b[i]-a[i]}
' input.txt

結果を出す

0 0 8 6 4 2

awkは算術演算中に有効な数値を持たない文字列をゼロと解釈するため、ソースフィールドに数値以外の値を含む結果を削除するには、追加の条件を追加するだけです。

awk '
    NR==1 {split($0,a)}
    NR==2 {split($0,b)}
    END {
        for(i=1;i<=NF;i++)
        if(a[i] ~ /^[0-9]+$/ && b[i] ~ /^[0-9]+$/)
        printf "%d ", b[i]-a[i]
    }
' input.txt

結果を出す

8 6 4 2

おすすめ記事