我被困在看起來應該對SED來說很簡單的東西中。SED - 通過文件的其餘部分刪除第一行的出現
我有一些(類)的CSV文件,我從另一個應用程序中獲得,所以我無法控制它的輸出。一些預處理已經完成了SED,但是我被困在最後一個。因此,如果可能的話,我希望用SED來做,以避免使用第三個應用程序。
的問題是,該文件(第一行)的標題線沿文件重複,但遺憾的是具有以下特徵:
- 每個CSV文件的標題是未知的先前。每個文件都有自己的標題,可能彼此不同;發生在每N行(爲N固定的已知數量)
- 其他數據(非標題)線可能被重複
- 不總是重複,並應保持
因此,假設我有以下2檔:
Cash.csv
Name; Amount
John; 3.55
Erick; 4.76
John; 8.99
Name; Amount
Erick; 4.76
Mark; 1.00
Name; Amount
John; 3.55
Check.csv
Name; Account; Amount
Erick; 345344; 123.00
Mark; 88849; 323.50
Name; Account; Amount
John; 474473; 99.00
Mark; 88849; 323.50
Mark; 88849; 323.50
John; 474473; 99.00
我希望的是,應用到每一個文件一個sed腳本把它們變成:
Cash.processed.csv
Name; Amount
John; 3.55
Erick; 4.76
John; 8.99
Erick; 4.76
Mark; 1.00
John; 3.55
Check.processed.csv
Name; Account; Amount
Erick; 345344; 123.00
Mark; 88849; 323.50
John; 474473; 99.00
Mark; 88849; 323.50
Mark; 88849; 323.50
John; 474473; 99.00
我想知道是否可以使用SED「保留緩衝區」作爲刪除命令的模式:
1h #Hold the first line (headings)
/\h/d #Use hold buffer as a pattern to delete
假設「\ h」會將保留緩衝區返回給刪除命令。
感謝您的回覆;
PS:請不要使用以下過特定命令回答:
1p;/Name; Amount\|Name; Account; Amout/d
喬納森,謝謝你的提示。沒有足夠的聲望,但只要我得到它,我會標記爲有用。我很長一段時間只讀堆棧溢出風扇。我沒想到會得到有用的答案,所以現在我是一個很大的SO粉絲。謝謝你們! – RFVoltolini