Bash删除尾随字符,直到破折号字母数字

时间:2013-04-03 15:06:16

标签: bash awk

我的输出如下:

foo-1_2_3_4_5_bar
foo-6_7_8_9_0_1_2_bar

如何删除尾随字符,以便获得此输出:

foo-1
foo-6

我尝试过:

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

但这非常不方便,因为字符串可以有不同的长度。

2 个答案:

答案 0 :(得分:4)

如果您的字符串位于variable,则:

echo ${variable%%_*}

有关bash内置string manipulation

的其他信息

答案 1 :(得分: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