打印通配结果

王朝other·作者佚名  2008-05-18
窄屏简体版  字體: |||超大  

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……

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航