我有输入文件名:
Sample_0000860156-001-out_20150224150524.xml.gz
Run Code Online (Sandbox Code Playgroud)
我只想0000860156-001
从 file_name 附加到我的目标文件名。
ter*_*don 21
这里有一些方法。您还没有解释要对要提取的字符串做什么,所以我将打印它。
awk
带有多个分隔符
echo Sample_0000860156-001-out_20150224150524.xml.gz |
awk -F '[_-]' '{print $2"-"$3}'
Run Code Online (Sandbox Code Playgroud)GNU grep
echo Sample_0000860156-001-out_20150224150524.xml.gz | grep -oP '_\K.*(?=-)'
Run Code Online (Sandbox Code Playgroud)sed
echo Sample_0000860156-001-out_20150224150524.xml.gz |
sed 's/.*_\([0-9]*-[0-9]*\)-.*/\1/'
Run Code Online (Sandbox Code Playgroud)珀尔
echo Sample_0000860156-001-out_20150224150524.xml.gz |
perl -pe 's/.*_(.+?-.+?)-.*/\1/'
Run Code Online (Sandbox Code Playgroud)
或者,使用最新的 perl 版本(感谢@ksenoy):
echo Sample_0000860156-001-out_20150224150524.xml.gz |
perl -aF/[_-]/ -lne 'print $F[1]-$F[2]'
Run Code Online (Sandbox Code Playgroud)cut
echo Sample_0000860156-001-out_20150224150524.xml.gz |
cut -d_ -f2 | cut -d- -f1,2
Run Code Online (Sandbox Code Playgroud)