正規表現を使用してコマンドラインから数値を抽出する

正規表現を使用してコマンドラインから数値を抽出する

私はJavaScriptファイルの循環的な複雑さを計算するツールを使用しています。

例:

jsc --minimal test.js

このコマンドは、次の出力を提供します。

┌─────────────────────┬─────┬────────────┬─────────────────────┐
│ File                │ LOC │ Cyclomatic │ Halstead difficulty │
├─────────────────────┼─────┼────────────┼─────────────────────┤
│ /home/shray/test.js │ 23  │ 4          │ 10                  │
└─────────────────────┴─────┴────────────┴─────────────────────┘
Cyclomatic: min 4 mean 4.0 max 4
Halstead: min 10 mean 10.0 max 10

今私は

jsc --minimal test.js | grep "Cyclomatic:"

これは私に出力を与える

Cyclomatic: min 4 mean 4.0 max 4

これで正規表現がありますが、Cyclomatic:[\s]*min[\s]+([0-9]+)それを使用して最小のサイロマティック値を示す数値を抽出することはできません。

ターミナル出力から最小または最大循環複雑度値を出力する方法についてのヘルプが必要ですか?

ベストアンサー1

行の形式が常に同じであることがわかっている場合は、simpleを使用できますcut

cut -d' ' -f3

または、awk最初の作業を含むすべての作業をあなたと一緒に行いますgrep

awk '$1 == "Cyclomatic:" {print $3}'

行が変更される可能性がある場合は、以下を使用してくださいsed

sed -E 's/.*( min )([0-9]+).*/\2/'

またはgrep -P以下がある場合:

grep -Po ' min \K[0-9]+'

または通常grep

grep -o 'min [0-9]\+'

これは返され、min 4簡単にフィルタリングして他の項目を追加したりgrepcut

grep -o '[0-9]\+$'
# or
cut -d' ' -f2

おすすめ記事