2017-02-25 24 views
-1

表格的形式給出一個文件LIST.TXT寫0或1:如何找到在連續行兩個字符串,並相應地在外殼

1.inside list.txt 
2.Started task: running_temp 
3.Finished task: running_temp 
4.Started task: walking_temp 
5.Finished task: walking_temp 
6.Started task: sleeping 

我想這將需要檢查的輸出文件每一次開始都應該有一個結束。如果沒有完成將不得不報告錯誤。

+2

預期**輸出**看起來如何? – anishsane

+0

你能澄清你的問題嗎? –

回答

2

awk來救援!

awk -F: '/^Started/ {a[$2]++} 
     /^Finished/ {a[$2]--} 
     END   {for(k in a) print a[k],k}' file 


0 walking_temp 
1 sleeping 
0 running_temp 

,你還可以得到-1,如果你已經 「完成」 沒有 「入門」

0

我假設你需要如果Started具有後本身並沒有Finished,否則

文件

1.inside list.txt 
2.Started task: running_temp 
3.Finished task: running_temp 
4.Started task: walking_temp 
5.Finished task: walking_temp 
6.Started task: sleeping 
7.Anything ... 

注意6.Started沒有Finished

perl -nle '$m && print (/Finished/ ? "$` : 1" : "$` : 0"); $m = /Started/' file 
3. : 1 
5. : 1 
6. : 0 

6.Started具有後本身並沒有Finished

相關問題