Sed在第二个单词后提取到第一个空格

时间:2012-06-11 23:47:06

标签: shell sed awk

我们如何使用sed获取“Install ID:”和XKCD之后的第一个空格之间的4个字符,基本上我想从中提取“XKCD”字符串

Install ID:          XKCD (8426200,8179503)

我尝试使用 -

 echo "Install ID:          XKCD (8426200,8179503)" | sed -n 's/^.*ID:\(.*\)*$/\1/p'

但是这给了我“XKCD (8426200,8179503)”而不仅仅是XKCD。我无法弄明白,如何交出空间部分。

2 个答案:

答案 0 :(得分:3)

对您的尝试进行了一些小修改:

echo "Install ID:          XKCD (8426200,8179503)" | sed -n 's/^.*ID: *\([^ ]*\) .*$/\1/p'

echo "Install ID:          XKCD (8426200,8179503)" | awk '{print $3}'

答案 1 :(得分:0)

 test="Install ID:          XKCD (8426200,8179503)"
 echo $test | sed -re 's/^.*\:\s+([A-z]{4}).*/\1/'

或者:忽略冒号前的所有内容,忽略冒号后面的空格,获取空格后的四个字符,然后忽略所有内容。如果您的角色包含数字或其他东西,它们当前会失败(但您需要将它们添加到方括号中的列表中)。