2014-01-06 33 views
1

我有一個問題,即在UNIX中使用headtail命令從大型事務日誌中截斷特定事務。在UNIX中使用頭部和尾部來提取特定事務

head -X <<<filename>>> | tail -Y > <<<Truncatedfile>>> 

其中X是我從文件和Y的開始想的行數是我從文件的底部想要的行數。

如何修改此代碼以使截斷的文件僅包含一個唯一事務ID的事務?例如: - 該文件包含一個序列中事務ID數量的事務日誌n。所以,如果我只需要提取日誌只有一個單一的事務ID如何修改上面的代碼?

+0

千萬的事務ID出現在文件的每一行?你可能需要'grep',或者'sed'。 –

+0

請不要用大寫字母來寫命令名; 「尾巴」和「尾巴」是不同的名字。 –

+3

請發佈事務日誌樣本,這將有助於確定最佳命令來提取所需的行。 – chepner

回答

2

你不會修改上面的代碼,而不是你最好

grep -w transactionid filename 

假設的transactionId顯示爲一個單獨的字(-w)

編輯您可以包括一些(包括匹配後的10行):

grep -w -A 10 transactionid filename 

Alterna疑心,

grep -vw transactionid filename 

簡單,隱藏所有線包含事務ID。這接近相當於做sed -e '/transactionid/!d'


印刷線條5-12

sed -n '5,12p' filename 
+0

那麼不需要做頭部和尾部? –

+0

@Keith Thompson - 是的,交易ID幾乎出現在所有的行上。 –

+0

讓我重新解釋我的問題。是否有辦法從事務ID的第一個實例截斷文件直到事務ID的最後一個實例。 –