shell - 打印通配结果
				
				
					
					打印通配结果
2004-04-23 15:18 pm来自:Linux文档
现载:Www.8s8s.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……