我在使用sed解析此特定行时遇到问题:
/media/file/1.bmp app:Stuff I want:
基本上我想在两个冒号(::
)之间获取内容,在这种情况下是Stuff I want
。
我试过
sed -r 's/.*app:([\s\w\d]*):.*/\1/'
这没有用。
答案 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.