2015-10-27 28 views
-1

我有很多的文件(〜9000),它們被命名爲這樣的第一部分:桑達:獲得一行直至「_Sxx_」,其中xx是0-999

Something_some_more_even_more_S0_other_stuff  
Something_S2_other_stuff  
Something_even_more_S13_other_stuff 
Something_some_more_even_S999_other_stuff 

正如你看到的長度位於分隔符Sxx前面的位不固定。 此外,分隔符的範圍可以從S0S999(不是S01左右)。 下劃線實際上是在那裏。

那麼如何讓第一部分到Sxx

+0

因此,如果有兩個S號上線起牀的第一個? – 123

+0

行中只有一個這樣的數字:-) – Manux

回答

0

sed使用:

sed 's/_S[0-9]\+_.*$//' file 
Something_some_more_even_more 
Something 
Something_even_more 
Something_some_more_even 

在我們符合使用圖案從_S<digit>開始本sed命令和行結束結束即$。作爲替代,我們只使用一個空字符串。

這AWK也將工作:

awk -F '_S[0-9]+_.*$' '{print $1}' file 
+0

我可以知道爲什麼downvote? – anubhava

+0

嗨anubhava,我沒有投票,你的解決方案有效,但_Sxx仍然存在,如果刪除也會更好。你也可以向我解釋正則表達式嗎? – Manux

+0

好的編輯回答與答案的解釋。 – anubhava