0
我有一個程序產生的結果,包含一個頭和一個頁腳的終端。當第一行僅包含' - '字符時,標題結束,當遇到包含' - '的最後一行時,頁腳開始。我想通過另一個程序將該程序的輸出傳遞給另一個程序,該程序將刪除頁眉和頁腳,僅保留數據。我不確定最有效的方法是什麼。這些文件大小約爲20MB。我正在運行Mac OSX如何管道程序輸出,以消除特定的文字
我有一個程序產生的結果,包含一個頭和一個頁腳的終端。當第一行僅包含' - '字符時,標題結束,當遇到包含' - '的最後一行時,頁腳開始。我想通過另一個程序將該程序的輸出傳遞給另一個程序,該程序將刪除頁眉和頁腳,僅保留數據。我不確定最有效的方法是什麼。這些文件大小約爲20MB。我正在運行Mac OSX如何管道程序輸出,以消除特定的文字
您可以使用'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 ||狀態== 1)在你的第一個if語句中?否則,在第一次通過不再在頭部的線後,它會自動切換到狀態2,頁腳? – PhiloEpisteme
帶'if(state == 0)'的塊只在你是一行'---'時執行。因此,任何通過標題的行(直到您點擊頁腳'---'行)都不會執行該第一個塊,而是轉到其中包含打印的塊。試一試測試文件。 –