2016-08-31 245 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