2013-04-03 93 views
1

我的輸出是這樣的:擊刪除尾隨字符,直到破折號字母

foo-1_2_3_4_5_bar 
foo-6_7_8_9_0_1_2_bar 

如何刪除後的字符,所以我得到這樣的輸出:

foo-1 
foo-6 

我試過

awk 'sub("..........$", "") 

但這是非常不方便的,因爲該字符串可以具有不同的長度。

回答

2
sed 's/_.*//' 

測試:

kent$ echo "foo-1_2_3_4_5_bar 
foo-6_7_8_9_0_1_2_bar"|sed 's/_.*//' 
foo-1 
foo-6 

添加一個awk一行代碼:

awk -F_ '$0=$1' 

相同的輸入,輸出相同:

kent$ echo "foo-1_2_3_4_5_bar 
foo-6_7_8_9_0_1_2_bar"|awk -F_ '$0=$1' 
foo-1 
foo-6 
+0

保存一個字符,刪除多餘的美元。 – Jens

+0

@Jens你是對的,刪除一美元,並增加了兩美元(awk一行);-)。 – Kent

+0

使用sed比其他選擇更快,因爲我已經使用它來添加一些字符串,並沒有將它作爲變量傳遞。謝謝! – hild

相關問題