1行でegrep -o出力を取得する

1行でegrep -o出力を取得する

以下の出力からのみデータを取得しようとしています。egrepコマンドを使用してデータを除外しようとしていますが、インポートするデータは別の行にあります。 1行のデータをどのように取得できますか?

Total: 44.75TB   Used: 0.44TB    Available:42.04TB       Usage(5% System alocation included):6.07%

これは要件です。

44.75   0.44    42.04       6.07

私たちが試したのは、次のコマンドと出力でした。

# cat output| egrep -o "[+-]?[0-9]+[.]?[0-9]([eE][+-])?[0-9]"
44.75
0.44
42.04
6.07

ベストアンサー1

:それ以降のすべての値を取得し、スペースやタブを使用してリンクしたいようです。

perl選択です

$ perl -lne 'print join "\t",/:\h*\K[^ ]+/g' output
44.75TB 0.44TB  42.04TB 6.07%
  • /:\h*\K[^ ]+/g:a とオプションの水平スペースの後に表示される非スペースの文字を取得します。
    • フィールド区切り記号にタブがある場合は、代わり\Hに使用してください。[^ ]
  • join "\t",一致する文字列は、タブ文字を区切り文字として使用して連結されます。


数字のみを取得する

$ perl -lne 'print join "\t",/:\h*\K[\d.]+/g' output
44.75   0.44    42.04   6.07
  • 数値に数字と小数点のみが含まれており、妥当性を確認しないと仮定すると、次の偶数などのオプションのスペース1.324.4と一致します。...:

おすすめ記事