如何提取“:”之间包含的部分行?

时间:2011-08-09 19:18:12

标签: regex bash sed

我在使用sed解析此特定行时遇到问题:

/media/file/1.bmp app:Stuff I want:

基本上我想在两个冒号(::)之间获取内容,在这种情况下是Stuff I want

我试过

sed -r 's/.*app:([\s\w\d]*):.*/\1/'

这没有用。

4 个答案:

答案 0 :(得分:5)

尝试使用以下内容(更新:显示\:没有必要,:很好)

sed -r 's/.*\:([^\:]*)\:.*/\1/'

或根据@brandizzi和@ joemooney的回答:

sed -r 's/.*:([^:]*):.*/\1'

或带剪切

cut -f 2 -d":"

答案 1 :(得分:3)

你不需要sed,awk看起来更好:

awk -F : '{print $2}'

答案 2 :(得分:1)

$ echo "/media/file/1.bmp app:Stuff I want:" | sed -r 's/.*app:([^:]*):.*/\1/'
Stuff I want

答案 3 :(得分:1)

echo '/media/file/1.bmp app:Stuff I want:' | cut -d ':' -f 2

简单而优雅。 Cut是我用来消除字段的工具。 -d注意到消除字符,-f 2告诉您获取字段2.