2014-02-14 57 views
0

首先,感謝大家的幫助!我一直在學校學習Unix,並且在最近的家庭作業之前一直做得很好。sed或切?我如何才能從文件中獲取列標題?

我試圖找出最好的方式來處理我的家庭作業這個特定部分。

我有我必須分成兩個獨立的文件頭文件。有兩個部分轉讓的這部分:

首先,文件的前兩行去到一個文件中。我做這樣做:

head -2 headers > file1 

然而,接下來的要求是採取兩個列標題(--Regular--和--Overtime--),並把它們放到另一個文件......這是我有麻煩了。

頭文件看起來是這樣的:

Merry Land Training Academy 
Pay Report 
Week of June 12, 1999 

       --Regular--- --Overtime-- Gross Net 
Employee  Hours Rate Hours Rate Pay  Pay 

我知道的grep只能匹配包含圖案線條,但我怎麼能在最後兩後刪除字符 - 在加時賽?

例如,我的grep將返回以下:

egrep 'Regular' headers 

      --Regular--- --Overtime-- Gross Net 

我知道我可以做手工一個sed「毛」和替換「網」做了grep命令來刪除的話後,但是我知道這是低效的。

這個命令將是一個腳本,將包含許多其他進程(我已經能夠迄今爲止做)的一部分。

在我的研究在網上,我知道有很多人建議用awk,但是我們還沒有在使用過程中瞭解到這一點。

再次感謝您的提前。我非常期待從每個人的經驗中學習。

+0

你能舉一個你的輸入文件的例子嗎? – Bill

+0

如何切斷,如果總是在同一個位置。 'cut -c1-47 <文件 ' – BMW

+0

@Bill謝謝您的回覆!我提到的頭文件是輸入文件。我正在嘗試將--Regular--和--Overtime--列標題轉換爲可以任意命名的單獨文件(可能爲本示例,file2)。 – MrShiftyEyes

回答

0

爲什麼你認爲使用sed是低效?當然管道grepsed將是一個錯誤,但sed是相當不錯的。你還沒有真正定義的問題非常好,但假設你可以通過串--存在區分頭,你可以簡單地做:

sed -n -e '/--/s/[^-]*$//p' input > output 

這將服用含有--和輸出的一切都行直到最後的-。如果你只想打印第一個這樣的行:

sed -n -e '/--/{s/[^-]*$//p;q;}' input > output 
+0

Hi @William,謝謝你的幫助!我很抱歉不清楚。我會嘗試添加儘可能多的上下文。我並不是說sed本身效率低下。就像我想要做的那樣。我會給這個鏡頭。再次感謝你! – MrShiftyEyes

相關問題