2015-09-20 128 views
0

我想弄清楚如何grep從一個小數位數組成的文件讀取的時間戳,但我似乎無法得到我正在尋找的輸出,任何幫助將是偉大的!提前致謝。小數位數的小數位數

例子:

[Time since reference or first frame: 691.933275000 seconds] 
[Time since reference or first frame: 691.953127000 seconds] 
[Time since reference or first frame: 691.992275000 seconds] 
[Time since reference or first frame: 691.997590000 seconds] 

結果應該是:

691.933275000 
691.953127000 
691.992275000 
691.997590000 

我試了一下:

grep '[0-9]\.[0-9]' tmp.txt 
grep -Eo '[0-9]\.[0-9]' tmp.txt 
grep -Eo '([0-9]{1,10}[\.]){1,10}[0-9]' tmp.txt 
+0

是否有文件只有這些內容? – Steephen

+0

是的,只有這個。 – btald1331

回答

2

可以使用awk分割文件檢索這些領域其中有十進制數

cat file_name | awk '{print $7}' 
+0

謝謝,這個工作太棒了!我應該想到awk。 – btald1331

+0

通過--' awk'{print $ 7}'file_name'擺脫UUOC。 –

0

下面是它可以使用Perl來解決:

perl -lane 'for (@F) {print if /^\d+\.?\d+$/}' file 

這些命令行選項用於:

  • -n環圍繞輸入文件的每一行,不自動打印該行

  • -l在處理前刪除換行符,a nd將它們添加回來之後

  • -a autosplit模式 - 將輸入行分割到@F數組中。默認爲分裂上的空白

  • -e執行Perl代碼

Perl代碼將每個輸入線到@F陣列,然後每場遍歷,並決定是否將其打印出來。

正則表達式/^\d+\.?\d+$/對每個空格分隔單詞使用

  • \d+一個或多個標記

  • \.?零個或一個

    • ^啓動。

    • \d+一個或多個數字

    • $結束

  • 0
    $ cut -d' ' -f7 file 
    691.933275000 
    691.953127000 
    691.992275000 
    691.997590000