Bashを学んでいますが、テキストファイルからデータを抽出するのに問題があります。 「awk」が使えることはわかりますが、どのように使うのかわかりません。
次のデータを2つの列にまとめました。
8.044 FIX
9.326 3 the
18.726 blank
20.742 FIX
63.624 FIX
64.89 3 house
73.656 TEST
2番目の列の識別子に基づいて、最初の列に示されている数字を減算したいと思います。 2番目の列の「3」は私の識別子で、次の行は私が減算したい番号です。したがって、次のようにする必要があります。
18.726 - 9.326
73.656 - 64.89
出力は、次の3つの列を持つテキストファイルになければなりません。
9.326 9.4 1
64.89 8.766 1
どんな助けでも大変感謝します!よろしくお願いします!
答え1
努力する:
awk '$2=="3"{out=1;last=$1;next}out{print last,$1-last,1;out=0}' infile
答え2
ファイルの行を置き換えると、awkコードが簡単になります。
tac file | awk '$2 == "3" {print $1, prev - $1, 1} {prev = $1}' | tac
9.326 9.4 1
64.89 8.766 1
「3」が行の最後に表示されると、2番目の値は最初の値の否定値になります。 "prev"変数は空であり、awkは減算で値0を使用します。