grep
不是這項工作的最好過,因爲它無法讀取多行。您可以將它們與-B1配對讀取,但您仍然使用sed
,awk
或其他更強大的工具解析該文件。
這裏的另一種方法是同樣適用的情況下,你會得到extraneus線之前(在echo
在那裏只是讓你可以幹運行它):
$ echo 'Before starting transaction id = 123
After starting transaction id = 123
After starting transaction id = 54675
Before starting transaction id = 567
After starting transaction id = 567' |
sort -k6 | uniq -u -f5 # end cmd
After starting transaction id = 54675
它通過檢查只是唯一的ID。因爲我不知道你在那裏得到什麼樣的內容,也許他們是現有條目的重複,在這種情況下,你將不得不做不同的事情。下面是更安全的方法,它捕獲這兩種情況下,並用多於或少於2 ID頻率返回OCCURENCES:
$ echo 'Before starting transaction id = 123
After starting transaction id = 123
After starting transaction id = 567
Before starting transaction id = 567
After starting transaction id = 567' |
sort -k6 | uniq -c -f5 | grep -v "^[[:space:]]*2[[:space:]]"
3 After starting transaction id = 567
'差異「\'貓文件| grep的\後'」「\'貓文件| grep的前\'''? 現在沒有接近bash,所以我沒有測試它。 – Viehzeug 2013-02-15 09:33:21
是After之後的下一行嗎?如果他們配對 – Kent 2013-02-15 09:34:11