以下の出力からのみデータを取得しようとしています。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
と一致します。...
: