正则表达式从年 - 月 - 日 - title.ext
问题描述:
捕捉标题我有一个具有以下形式的名称的文件:正则表达式从年 - 月 - 日 - title.ext
year-month-day-title.ext
年是4个位数,月,日各2位。
我想从文件名中捕获标题,标题由字母数字字符和连字符组成。
我与sed
尝试:
sed -En 's/\d{4}-\d{2}-\d{2}-([\w\\-]+)\.ext/\1/p'
但它不工作,我不知道为什么,我也不是很方便的与正则表达式/ sed的:(
任何标准UTIL是好的,只要我可以管我的文件名,并获得我的标题
答
我相信sed
使用POSIX正则表达式是不同于PCRE例如,\ W,\ D甚至不可用,您的正则表达式将是例如:
echo '0000-00-00-title.ext' | sed -En 's/[0-9]{4}-[0-9]{2}-[0-9]{2}-(.+)\.ext/\1/p'
输出:
title
答
我认为这样的问题是更适合的awk
echo "year-month-day-title.ext" | awk -F"[-.]" '{print $4}'
答
一些其他的awk版本
echo '0000-00-00-title.ext' | awk -F. '{n=split($1,a,"-");print a[n]}'
这工作,因为日期固定lengt
echo '0000-00-00-title.ext' | awk -F. '{print substr($1,12)}'
答
这里是另外一个使用cut
:
echo 0000-00-00-title.ext | cut -d- -f3 | cut -d. -f1