2015-10-06 105 views
0

我試圖在文件標題行使用sed來調整,我已經看了很多以前的帖子,但沒有我基於這些至今已經幫助嘗試了標題行的一部分。所以這裏有雲: 我使用的是Mac OS終端, 我有標題行的文件是這樣的:有>使用SED刪除開始斜槓

>KeepThis_text_VariableNumbersHere /LotsOFText/Here to get rid of." 

開始我想有:

>KeepThis_text_VariableNumbersHere 

所有的標題行結尾「,但標題行內也有引號。

我已經嘗試了許多使用sed的變體,下面是幾個:

sed -e 's/^\/*.*//' input.file > output.file #this removed everything 

sed -e 's/^\/*.*"//' input.file > output.file #this kept non-header 

線,這是很好的,但擺脫了整個標題行的

sed -e 's/>KeepThis_Text_*.* *.*」/>KeepThis_Text_*.*\//' input.file > output.file #This did not change anything 

謝謝你的任何建議!

+0

'cut -d/-f1'爲您提供了第一部分,但您對標題行有何意義?只有文件中的第一行或者所有以'>'開始並以'.'結尾的行?或者他們也必須有兩個斜線? '>我是一個帶有兩個//和一個點的標題行。「 –

回答

0

我會用捕捉一切從>開始,包括空格,接着捕獲組/之前的一切。將只保留捕獲組和扔掉剩餘的文本,像這樣:

sed 's/\(>[^\/]\+\) .*/\1/' input.txt 

它使用擴展的正則表達式,使用-r選項看起來更乾淨:

sed -r 's/(>[^\/]+) .*/\1/' input.txt 

我不知道,如果標題行對你而言意味着第一行。如果你真的是在第一線,限制s命令的第一行是這樣的:

sed -r '1s/(>[^/]+) .*/\1/' input.txt 
+0

感謝您解釋您在此處所做的操作,我能夠使用上面的第一個響應來處理它,但是您的文章有一些有用的信息供將來使用, SED! – Carla

+0

歡迎您:) – hek2mgl

+0

@Carla Btw,如果您喜歡*上面的*第一個響應,那麼您需要接受它。這是通過點擊該答案旁邊的複選標記完成的。 – hek2mgl

1

如果你只是想改變一號線,考慮解決您的命令(s///):

sed -re '1s/\/\w+//g' 

或解決與>開頭的所有行:

sed -re '/^>/s/\/\w+//g' 

,或者如果你想從/放下一切結束線路:

sed -re '/^>/s/\/.*//g' 
1

如果你想只保留先於正斜槓的部分,那麼下面會做什麼:

sed -e 's-/.*--' 

該命令的分隔符不限於/,它只是一個約定。在這裏,我用-作爲命令分隔符。然後該命令:用斜槓替換任何內容,直到文本爲空的行結束。

+0

Hooray,這個工作很完美,非常感謝你!我知道我必須靠近,但是使用所有正斜槓會讓事情變得糟糕,這對於未來的工作很有幫助。 – Carla

0

awk來拯救!

awk -F/ 'NR==1{print $1;next}1' file 

只修改第一行,打印一切爲/