2013-05-30 47 views
0

我有一個程序產生的結果,包含一個頭和一個頁腳的終端。當第一行僅包含' - '字符時,標題結束,當遇到包含' - '的最後一行時,頁腳開始。我想通過另一個程序將該程序的輸出傳遞給另一個程序,該程序將刪除頁眉和頁腳,僅保留數據。我不確定最有效的方法是什麼。這些文件大小約爲20MB。我正在運行Mac OSX如何管道程序輸出,以消除特定的文字

回答

0

您可以使用'awk'來完成這項工作。下面是我在一個名爲clip.awk的文件中寫的一個awk程序文件。 您可以修剪你描述的data.txt這樣的數據文件:
$ cat data.txt | awk -f clip.awk

這裏是程序clip.awk:

BEGIN { state = 0; # HEADER 
} 
# match a line of all ---- 
/^-+$/ { 
    if (state == 0) 
     state = 1; # DATA 
    else 
     state = 2; # FOOTER 
    # Skip to next line 
    next; 
    } 
# print any line while in DATA section 
    { if (state == 1) print } 
+0

它不應該是如果(狀態== 0 ||狀態== 1)在你的第一個if語句中?否則,在第一次通過不再在頭部的線後,它會自動切換到狀態2,頁腳? – PhiloEpisteme

+0

帶'if(state == 0)'的塊只在你是一行'---'時執行。因此,任何通過標題的行(直到您點擊頁腳'---'行)都不會執行該第一個塊,而是轉到其中包含打印的塊。試一試測試文件。 –