ABCDchinchwad18-Mar-2010-11.sql.zip选择文本字符串
ABCDsolapur18-Mar-2010-10.sql.zip
如何找到“ABCD”和日期之间的串“18-MAR-2010”
预计resuts:
金杰沃德
肖拉普尔
ABCDchinchwad18-Mar-2010-11.sql.zip选择文本字符串
ABCDsolapur18-Mar-2010-10.sql.zip
如何找到“ABCD”和日期之间的串“18-MAR-2010”
预计resuts:
金杰沃德
肖拉普尔
sed 's/ABCD\(.*\)[0-9]\{2\}-[[:alpha:]].*.sql.zip/\1/'
输出:
chinchwad
solapur
pune2
,以消除find
(这更增加了路径灵活,便携和可维护性比parsing ls
):
sed 's|.*/ABCD\(.*\)[0-9]\{2\}-[[:alpha:]].*.sql.zip|\1|'
也许你应该去正则表达式
"ABCDchinchwad18-Mar-2010-11.sql.zip".match(/ABCD(\w+)[0-9]{2}-[a-zA-Z]{3}-[0-9]{4}/)[1]; //chinchwad "ABCDsolapur18-Mar-2010-10.sql.zip".match(/ABCD(\w+)[0-9]{2}-[a-zA-Z]{3}-[0-9]{4}/)[1]; // solapur
for file in ABCD*zip
do
file="${file/#ABCD/}"
echo ${file%%[0-9][0-9]-*-*}
done
或使用sed的
ls ABCD*zip | sed 's/^ABCD//;s/[0-9][0-9]-.*-.*//'
或用awk
ls ABCD*zip | awk -F"[0-9][0-9]-|ABCD" '{print $2}'
@ ghostdog74,OP在上面的评论中有一个新的要求。 – 2010-03-19 13:11:35
文件名包含以下内容输入
ABCDchinchwad18-Mar-2010-11.sql.zip
ABCDsolapur18-Mar-2010-10.sql.zip
sed -r 's/([A-Z]+)([a-z]+)(.*)/\2/' filename
输出是
金杰沃德
solapur
#查找。 -maxdepth 1 -name“* .zip”| sed -r'/([A-Z] +)([a-z] +)(。*)/ \ 2 /' ## ./chinchwad和./solapur#如何删除路径? – shantanuo 2010-03-19 11:18:08
@shantanuo,如果你正在使用maxdepth 1,那么你可能只需要使用'ls'来做一个列表。 – ghostdog74 2010-03-19 13:40:45
Perl会做的很好的位置:
ls *.zip | perl -pe 's/ABCD (\w+) \d{2}-\w{3}-\d{4} .*/$1/x'
如果必须使用find
:
find . -maxdepth 1 -name \*.zip |
perl -pe 's/.* ABCD (\w+) \d{2}-\w{3}-\d{4} .*/$1/x'
使用find具有递归优势,但使用maxdepth 1与您的'ls'版本相同,除了更长的:) – ghostdog74 2010-03-19 13:40:16
该字符串可以包含一个数字。例如, ABCDpune218-Mar-2010-10.sql.zip#并且我想在这种情况下返回pune2。 – shantanuo 2010-03-19 12:00:57