テキストファイルには次の行があります。
severity: Error , count: 10 violations , waived: 7, not waived: 3
シェルで単一のコマンドを使用したnot waived:
後、どのように数値を抽出できますか?3
grep
tcsh
答え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