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