sedまたは他のツールを使用してファイルから数字を抽出するには?

sedまたは他のツールを使用してファイルから数字を抽出するには?

この形式のファイルがあります

[2014/05/01 10:48:26 | 13963 | DEBUG]プロセスの完了に11.16837501525879秒かかりました。

だから私はこのような何千もの行を持っていて、私が試した11.16837501525879部分を「抽出」したいと思います

 sed -e 's/^.* (\d+\.\d*)/\1/g' logfile.txt > out.txt  

しかし、私は次のようになります。

sed: -e expression #1, char 21: invalid reference \1 on `s' command's RHS  

ここで何ができますか?

ベストアンサー1

sedデフォルトの正規表現はデフォルトで使用され、BREには不明です\d。以下はいくつかの異なる方法です。

  1. sed

    sed -r 's/.* ([0-9]+\.*[0-9]*).*?/\1/' logfile.txt > outfile.txt
    

    -r括弧をエスケープしないために必要です。

  2. perl

    perl -pe 's/.* (\d+\.*\d*).*/$1/' logfile.txt > outfile.txt
    
  3. grep

    grep -Po '.* \K\d+\.*\d*' logfile.txt > outfile.txt
    

これらはすべてfindを埋めるための基本的な方法を使用します。みんな1行目の前にスペースが続く数値のグループです。行に表示できる数値セットの数に応じて入力行が常に表示する形式の場合、より安全なアプローチは次のとおりです。

grep -Po 'took \K\d+\.*\d*' logfile.txt 

おすすめ記事