元の符号に関係なく、選択した行に負の値を出力します。

元の符号に関係なく、選択した行に負の値を出力します。

ASCIIファイル "text.dat"の特定の行を読み取るには、次のコードを使用しています。

sed -n '/Columnaxis/p' text.dat

出力は次のとおりです

Columnaxis: 100

前の行の2番目の部分だけを出力するために、前のコマンドラインに以下を追加しました。

 sed -n '/Columnaxis/p' text.dat | awk '{ print $2 }'

最後のコマンドの出力は「100」です。

数値の元の符号に関係なく、負の数を出力するように最後のコードをどのように更新できますか? (つまり、入力が「+100」の場合はコードで「-100」を出力したい、入力が「-100」の場合はコードで「-100」を出力したいと思います。

PS。 text.datの内容は次のとおりです。

Columnaxis: 100
Columnaxis_1: 100
Columnaxis_2: -100
Columnaxis_3: 50
Columnaxis_4: -2.3
Columnaxis_5: 1.2
Columnaxis_6: -5
Columnaxis_7: -2
Columnaxis_8: -4
Columnaxis_9: -2

コードから次のように出力したいと思います。

Columnaxis: -100

入力に「Columnaxis:+100」があるとします。

Columnaxis: -100

ベストアンサー1

またはawk一人で:

$ cat text.dat
Columnaxis: 100
Columnaxis: +100
Columnaxis: -100

$ awk '/Columnaxis/ { gsub("-|+", "", $2); print "-"$2 }' text.dat
-100
-100
-100

おすすめ記事