2016-08-31 307 views
2

我有一個像下面解析字符串

17:59:49.987 - JobID 864563: Found 7 clips from SeqID 862753 
17:59:49.987 - Processing Job 864562 
17:59:50.003 - JobID 864561: Location 14695 applied clip data successfully. Updating OCAMT_GM_Sent 
17:59:50.003 - Processing Job 864563 
17:59:50.003 - JobID 864564 
17:59:50.018 - JobID 864565 
17:59:50.034 - Processing Job 864565 
17:59:50.034 - JobID 864566 
17:59:50.034 - JobID 864562 
17:59:50.034 - JobID 864563 
17:59:50.034 - Processing Job 864566 
17:59:50.049 - JobID 864567 
17:59:50.049 - JobID 864564 
17:59:50.049 - Trying to send JobID 864566 to location 14623 at http://172.28.48.11/yb/ClipData.php. Retry count 0 
17:59:50.049 - Processing Job 864567 

我想捕捉某些字符串,以便其輸出文件是一樣的東西下面行的文件;

864563 17:59:49.987 
864562 17:59:49.987 
864561 17:59:50.003 
864563 17:59:50.003 

由於作業ID長度是可變的我想使用正則表達式\ d +和使用單詞作業作爲一個字段分隔破線在半,但我不確定如果下列可組合;

awk -F'Job*' '{print $1}'|awk '{print $1}' 
awk -F'Job*' '{print $2}' 
+4

[編輯]你的問題使顯示的預期輸出輸出你從樣本輸入得到顯示,而不是從一些不同的輸出輸入集。我們需要一些東西,我們可以測試一個潛在的解決方案,看它是否產生預期的產出。 –

+0

@Ed我認爲我提到的示例輸出文件具有可以從輸入中剝離的值。我有問題無視輸入文件 – Dren

+0

@Dren中的其他字符串,您希望輸出的內容是:Job和JobID,還是隻有其中一個...每一行輸入都包含該關鍵字? – Sundeep

回答

3

sed的版本:

sed -e 's/\([^ ]*\).*Job\(ID\)\? \([0-9]\+\).*/\3 \1/g' 

或由@spasic指出擴展的正則表達式:

sed -E 's/^(\S+).*Job(ID)? ([0-9]+).*/\3 \1/' 
+0

已通過測試,並能正常工作。歡迎隊友 – Dren

+0

Job或(JobID)也可以指定爲Job \(\ | ID \)'..用擴展正則表達式,'sed -E's/^(\ S +)。* Job(| ID) ([0-9] +)。*/\ 3 \ 1 /'' – Sundeep

+1

'Job'或'JobID'寫入'Job(ID)?'。根據[POSIX標準](http://pubs.opengroup.org/onlinepubs/009696899/basedefs/xbd_chap09.html#tag_09_04_03),您有什麼「Job(| ID)」是未定義的行爲(「**垂直在ERE中出現**第一個或最後一個,或者緊接着**垂直線或**左括號**或緊接在右括號之前**出現未定義的結果**) –

3

從您的意見,我假設你使用的是期待這樣的事情

awk

awk -F'[ ]+-.*Job(ID)? |:[ ]+|[ ]+' '{print $2, $1}' file 

輸出:

864563 17:59:49.987 
864562 17:59:49.987 
864561 17:59:50.003 
864563 17:59:50.003 
864564 17:59:50.003 
864565 17:59:50.018 
864565 17:59:50.034 
864566 17:59:50.034 
864562 17:59:50.034 
864563 17:59:50.034 
864566 17:59:50.034 
864567 17:59:50.049 
864564 17:59:50.049 
864566 17:59:50.049 
864567 17:59:50.049 
+0

IMO'作業[ID] *'應該更改爲'作業(ID)? ' – anishsane

+0

@Chet測試過,它的工作..cheers隊友。 – Dren