次の構造のファイルが2つあります。
ファイル1:
# Some comments on the file
# I am a line
# I am a new line
# I am yet a new line
# A value in the next line
123
Values
(
1
2
3
4
5
)
ファイル2:
# Some comments on the file
# I am a line
# I am a new line
# A value in the next line
123
Values
(
1.1
2.1
3.1
4.1
5.1
)
予想される結果は絶対的な違いを持つファイルです。
0.1
0.1
0.1
0.1
0.1
2つのファイル間の括弧内の値の絶対的な違いを知りたいです。
現在、私は次の機能を持っています。
foo()
{
paste $1 $2 | awk -F'\t' 'function abs(x){return ((x < 0.0) ? -x : x)} {print abs($1 - $2)}' > outputFile
}
これはうまくいきますが、すべてのファイルをチェックします。ヘッダーが一致しない場合、問題が発生します。開き括弧を見つけた後にのみ関数を適用するようにawkに指示する方法はありますか?
ありがとう
ベストアンサー1
関数を作成して使用する方法を既に知っているので、abs()
ここに追加してください。
$ awk '
/\(/{f=1; next} /)/{f=0} !f{next}
NR==FNR { file1[++a]=$0; next }
{ print $0 - file1[++b] }
' file1 file2
0.1
0.1
0.1
0.1
0.1