grepを使用してテキストファイルからデータを抽出する

grepを使用してテキストファイルからデータを抽出する

テキストファイルには次の行があります。

severity: Error , count: 10 violations , waived: 7, not waived: 3

シェルで単一のコマンドを使用したnot waived:後、どのように数値を抽出できますか?3greptcsh

答え1

この場合は簡単になりますawk

% awk '{ print $NF }' file.txt
3

$NF入力レコード(行)でスペースで区切られた最後のフィールド(列)のデータ。

grepはい一般的に言えば特定のパターンに一致する行全体を取得するために使用されますが、一部の実装はフラグを使用して行のビットを取得するためにも使用できます-o(一致するビットのみが返されます)。

% grep -o '[[:digit:]]$' file.txt
3

しかし、オンラインデータの一般的な処理awkにはgrep

ファイルに関連性の低い他のデータ行が含まれている場合:

% awk '/^severity:/ { print $NF }' file.txt

また、フィールドが行の最後にない場合は、次のものを使用できますsed

% sed -n '/^severity:/s/^.*not waived: \([[:digit:]]*\).*$/\1/p' file.txt
3

関連情報