如何从以下文件名中分别检索每个部分? DSA4020_frontcover_20346501_2011-05.doc
我想检索以下信息;
name = DSA4020
type = frontcover
id = 20346501
date = 2011-05
是否可以使用sed ??
答案 0 :(得分:5)
是的,你可以:
pax$ echo 'DSA4020_frontcover_20346501_2011-05.doc' | sed
-e 's/^/name=/'
-e 's/_/\ntype=/'
-e 's/_/\nid=/'
-e 's/_/\ndate=/'
-e 's/\..*//'
name=DSA4020
type=frontcover
id=20346501
date=2011-05
这一切都在一条线上,为了便于阅读,我将其分开。
如果您愿意,也可以使用awk
执行此操作:
pax$ echo 'DSA4020_frontcover_20346501_2011-05.doc'
| awk -F_ '{print "name="$1"\ntype="$2"\nid="$3"\ndate="substr($4,1,7)}'
name=DSA4020
type=frontcover
id=20346501
date=2011-05
答案 1 :(得分:4)
awk
可能是更好的选择
# f=DSA4020_frontcover_20346501_2011-05.doc
# name=$(echo $f | awk -F_ '{print $1}')
# echo $name
DSA4020
# type=$(echo $f | awk -F_ '{print $2}')
# echo $type
frontcover
答案 2 :(得分:2)
纯粹的bash
FILE="DSA4020_frontcover_20346501_2011-05.doc"
eval $(echo $FILE |(IFS="_";read a b c d; echo "name=$a;type=$b;id=$c;date=${d%.doc}"))
echo Name:$name Type:$type ID:$id DATE:$date