Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 正则表达式从year-month-day-title.ext捕获标题_Regex_Bash_Sed_Awk_Grep - Fatal编程技术网

Regex 正则表达式从year-month-day-title.ext捕获标题

Regex 正则表达式从year-month-day-title.ext捕获标题,regex,bash,sed,awk,grep,Regex,Bash,Sed,Awk,Grep,我的文件的名称如下: year-month-day-title.ext 年为4位数字,月和日各为2位数字 我只想从文件名中捕获标题,标题由字母数字字符和连字符组成 我对sed的尝试是: sed -En 's/\d{4}-\d{2}-\d{2}-([\w\\-]+)\.ext/\1/p' 但它不起作用,我不知道为什么,我对regex/sed不是很在行:( 任何标准的util都可以,只要我可以输入文件名并输出标题我相信sed使用POSIX正则表达式,它与PCRE不同,因此\w\d甚至不可用,

我的文件的名称如下:

year-month-day-title.ext  
年为4位数字,月和日各为2位数字

我只想从文件名中捕获标题,标题由字母数字字符和连字符组成

我对sed的尝试是:

sed -En 's/\d{4}-\d{2}-\d{2}-([\w\\-]+)\.ext/\1/p'
但它不起作用,我不知道为什么,我对regex/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

我相信
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 "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]}'
此工程自日期起已固定长度

echo '0000-00-00-title.ext' | awk -F. '{print substr($1,12)}'
其他awk版本

echo '0000-00-00-title.ext' | awk -F. '{n=split($1,a,"-");print a[n]}'
此工程自日期起已固定长度

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

下面是另一个使用
cut

echo 0000-00-00-title.ext | cut -d- -f3 | cut -d. -f1