awkを使用したサブセットデータ

awkを使用したサブセットデータ

awkを使用してデータのサブセットを作成したいと思います。 testというファイルがあるとしましょう。

IP MAC Bandwidth etc etc

192.1.1.1 ff:ff:ff:ff 5.421M
192.1.2.3 ff:ff:ff:f3 5.120M
192.1.2.5 ff:ff:ff:f1 5.100M

stuff I don't want to be selected

帯域幅の値だけを選択したいです。 (Mとエンディングを取り除くことができれば良いでしょう。おそらくsedを使うこともできます。方法はわかりませんが、それは主な問題ではありません。)

私が現在やっている最高のサブセットは次のとおりです。

awk '{print $3}' test

出力は次のとおりです。

Bandwidth

5.421M
5.120M
5.100M

dont

しかし、私は次のようになりたいです:

5.421
5.120
5.100

「M」がそこにいたら問題にならなかったのですが、それがアイデアでした。 awkに関する情報を収集し、いくつかの試みをしてみましたが、まだ解決策が見つかりませんでした。

ベストアンサー1

正確な回答を得るには、質問についてもう少し具体的にする必要があります。しかし、awkステートメントの一般的な構文は次のとおりです。

PATTERN { ACTION }

ACTION は PATTERN と一致する行でのみ実行されます。したがって、PATTERNACTION ブロックを使用して行ごとにサブセットを使用し、列ごとにサブセットを使用できます。たとえば、あなたのコメントに基づいて、次のように使用できます。

> awk '/^[0-9]/ {print $3 }' INPUTFILE
5.421M
5.120M
5.100M

以下は、最初のPATTERN文字が0から9の間の整数であるすべての行に一致する正規表現です。削除するには、Mたとえば別のコマンドにパイプするか、cuonglmの答えにあるコマンドをtr使用できます。gsub

awk '/^[0-9]/ { gsub(/M/, "", $3); print $3 }' INPUT_FILE

おすすめ記事