ここでは、区切り文字に基づいて最初の列を分割したいと思います-
。最後の列(ここでは列2)は最後の値に基づいて入力する必要があります。値が01
orの場合は、99
それぞれ2
またはに置き換えます1
。
#input
PE01-02-01 -9
PE01-02-99 -9
PE01-03-01 -9
PE01-03-99 -9
PE01-05-01 -9
PE01-05-99 -9
#output
PE01-02-01 2
PE01-02-99 1
PE01-03-01 2
PE01-03-99 1
PE01-05-01 2
PE01-05-99 1
これを達成する方法についてのアドバイスを提供できますか?最初の列を配列に分解して最後の要素にアクセスし、2番目の列を更新しようとしています。
ベストアンサー1
ネストを使用すると、やや不思議にこれを行うことができます。条件付き演算子?:(別名三項演算子)
awk '{$2 = $1 ~ /-01$/? 2: $1 ~ /-99$/? 1: $1; print}' input
PE01-02-01 2
PE01-02-99 1
PE01-03-01 2
PE01-03-99 1
PE01-05-01 2
PE01-05-99 1
交互に
awk '{n = split($1, a, "-"); $2 = a[n] == "01" ? 2: a[n] == "99"? 1: a[n]; print}' input