如何在Linux上使用sed从文件名中获取值?

Him*_*lay 2 linux sed

如何从以下文件名中分别检索每个部分?DSA4020_frontcover_20346501_2011-05.doc

我想检索如下信息;

名称= DSA4020

type = frontcover

id = 20346501

date = 2011-05

可以用sed吗?

pax*_*blo 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
Run Code Online (Sandbox Code Playgroud)

这一切都在一条线上,为了便于阅读,我将其拆分.

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
Run Code Online (Sandbox Code Playgroud)