您的位置:首页 > 文档 > Shell >
 文章分类 

打印通配结果


创建:2005-10-26 00:49:46
作者:Unlinux
来自: http://www.Unlinux.com

B[A-E]Z 怎样分别打印通配结果为:BAZ BBZ BCZ BDZ BEZ(shell 实现)
假定存在文件 BAZ001.ani BBZ001.ani BDZ001.ani BEZ001.ani
当ls B[A-E]Z* 列出文件时,缺少BCZ001.ani,但 ls B[A-E]Z*命令是执行成功的。
为了在后台判断每一文件的存在性我需要 B[A-E]Z 通配后的结果
(BAZ BBZ BCZ BDZ BEZ )分别生成文件,然后按行比较,看哪行是不同的

#!/bin/ksh
awk '
BEGIN {
for ( i=1; i<=255; ++i ) ord [i] = sprintf("%c",i);
for ( i=1; i<=255; ++i ) {
c="A" ord[i] "E"
if ( c ~ /A[A-Z]E/ ) {
print c
}
}
}
'

第一个for循环产生一个长度为255的数组,其内容为相应ascii值所对应的字符。
第二个for循环是生成"c"字符串变量,它的中间一个字符就是上面数组中的元素,if语句
打印出与A[A-Z]E通配的c字符串的值:AAE、ABE、ACE、ADE……

转载自:http://www.unlinux.com/doc/shell/20051026/252.html

评论】 【加入收藏夹】 【 】 【打印】 【关闭
 *  请尊重我们的劳动,转载请注明出自UnLinux.Com及作者名 * 

※ 相关链接
无相关信息
Copyright © 2005 UnLinux.Com All Rights Reserved