- 论坛徽章:
- 32
|
本帖最后由 yestreenstars 于 2013-10-28 12:12 编辑
又写了一个~借助二维数组~单脚本完成任务~- [root@localhost ~]# cat i
- ABDCDCDCAAXCXCDCCABABDCDCDCAABXBABDCDCDCAABBCDCCAXDBBXABDCDCDCAABBCDXCCA
- BBCDCCABBBABXCDCDCAABBCDXCCABBBBBABDCDCDCAABBCDCCAXBBBABCDAAAXBCDADCAXXX
- XABCDCDCAAXBBCCDCCABABDCDCDCAABXBABDABACCCAXCDCDCAABBCDCCABBBXABDCDCDCAA
- AACDCCAADCABDCDCDCAABXCDXCXABCDDBABDCDCDCAABBXBXCAABBBABCDAAAXBCDADCABBB
- ADCAAAAAXABCDCCCCCDCABXBBCCDCCABABDCDCDCAABXBABDABDCCCAXCDCDCAAAAABBCDCC
- XCCCAABDCAAXXAADCCCCCCAACCAAAAAAAAAXBBDCCXACDACDAAXCBBBBBBBAAABCADDCAAXC
- XABCDCDCAAXBBCCDCCABABDCDCDCAABXBABDABACCCAXCDCDCAABBCDCCABBBXABDCDCDCAA
- [root@localhost ~]# cat a
- #!/bin/awk
- BEGIN{
- FS="";
- IGNORECASE=1;
- a["a"]=a["A"]=1;
- a["b"]=a["B"]=2;
- a["c"]=a["C"]=3;
- a["d"]=a["D"]=4
- }
- {
- for(i=1;i<=NF;i++)b[NR,i]=$i
- }
- END{
- for(i=1;i<=NR;i++){
- for(j=1;j<=NF;j++){
- if(b[i,j]=="X"){
- for(k=j-1;k>=j-a[b[i,j-1]]&&k>=1;k--){
- if(b[i,k]=="X")break;
- b[i,k]=tolower(b[i,k])
- }
- for(k=j+1;k<=j+a[b[i,j+1]]&&k<=NF;k++){
- if(b[i,k]=="X")break;
- b[i,k]=tolower(b[i,k])
- }
- b[i,j]=tolower(b[i,j])
- }
- }
- }
- for(i=1;i<=NF;i++){
- for(j=1;j<=NR;j++){
- if(b[j,i]=="X"){
- for(k=j-1;k>=j-a[b[j-1,i]]&&k>=1;k--){
- if(b[k,i]=="X")break;
- b[k,i]=tolower(b[k,i])
- }
- for(k=j+1;k<=j+a[b[j+1,i]]&&k<=NR;k++){
- if(b[k,i]=="X")break;
- b[k,i]=tolower(b[k,i])
- }
- b[j,i]=tolower(b[j,i])
- }
- }
- }
- for(i=1;i<=NR;i++){
- for(j=1;j<NF;j++)printf b[i,j];
- print b[i,NF]
- }
- }
- [root@localhost ~]# awk -f a i
- aBDCDCDCaaxcxcdcCABABDCDcDcAabxbaBDCDCDCAABbCdCcaxdbbxaBDCDCDcAAbbcdxcca
- bBCDCCABbBabxcdcDCAAbbcdxccaBBbbBABDCDCDCAAbBcDcCaxbbbABCDAAaxbcDADCaxxx
- xaBCDCDCaaxbbCCDCCABAbdCdCdCAabxbaBdABACCCaxcdcdCAaBBcDcCABbbxaBDCDCDcaa
- aACDCCAAdCabdCDCDCAabxcdxcxaBCDdBABdCDCDCAAbbxbxcaaBBBAbCDAAaxbcDADCAbbB
- aDCAAAAaxaBcdCCCCCDCabxbbCcDCCAbABDcDCDCAabxbaBdABdCCCaxcdcDCaAAAABBCdcC
- xcccAABDcAaxxaADCCCCCcaAcCaAAAAaAAaxbbdccxacDACdAaxcbbBbBBBAAaBCADDCAaxc
- xaBCDCDCaaxbbCCDCCABABDCDCdCAabxbaBdABACCcaxcdcdCAaBBCDcCABbbxaBDCDCDCaA
- [root@localhost ~]#
复制代码 |
|