亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫
12下一頁
最近訪問板塊 發(fā)新帖
查看: 2185 | 回復(fù): 13
打印 上一主題 下一主題

請(qǐng)求shell朋友的幫助! [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2004-11-02 15:48 |只看該作者 |倒序?yàn)g覽
有單位代碼及排列順序如下:
  1. A001
  2. A002
  3. A021
  4. A022
  5. A023
  6. A025
  7. A027
  8. A029
  9. A031
  10. A093
  11. A094
  12. A095
復(fù)制代碼
這樣的順序重復(fù)6次

現(xiàn)從數(shù)據(jù)庫提取數(shù)據(jù)時(shí),如果某單位無數(shù)據(jù)時(shí)就會(huì)缺行,如下:
  1. # cat datas
  2. A001 9725.11 A
  3. A021 8856.12 M
  4. A023 9925.17 P
  5. A025 0012.45 O
  6. A031 1010.11 K
  7. A093 2001.59 L
  8. A095 4500.09 Y
復(fù)制代碼
以下數(shù)據(jù)重復(fù)6次,但缺失的單位不盡相同;
現(xiàn)要求用shell補(bǔ)齊所有單位,并為缺失的單位輸出“單位代碼 0 Q”,并且單位順序不可混亂:
  1. A001 9725.11 A
  2. A002 0 Q
  3. A021 8856.12 M
  4. A022 0 Q
  5. A023 9925.17 P
  6. A025 0012.45 O
  7. A027 0 Q
  8. A029 0 Q
  9. A031 1010.11 K
  10. A093 2001.59 L
  11. A094 0 Q
  12. A095 4500.09 Y
復(fù)制代碼
本人的代碼如下:
  1. awk 'BEGIN{split("A001 A002 A021 A022 A023 A025 A027 A029 A031 A093 A094 A095",C," ");i=1}
  2. {
  3.         if($1==C[i]){printf("%s %s %s\n",$1,$2,$3)}else{printf("%s 0 Q\n",C[i++])};
  4.         i++;
  5.         if(i==13){i=1};
  6. }' datas
復(fù)制代碼
但如果有兩個(gè)或兩個(gè)以上連續(xù)的單位缺失時(shí),結(jié)果就不對(duì)了,希望大家?guī)兔Γ?br /> 謝謝

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2004-11-02 17:14 |只看該作者

請(qǐng)求shell朋友的幫助!

不知道這樣符合你的要求嗎?

  1. #! /bin/sh

  2. arry=(A001 A002 A021 A022 A023 A025 A027 A029 A031 A093 A094 A095)
  3. num=0
  4. while read Line
  5. do
  6. varlocal=(echo ${Line})
  7. #echo $num
  8. #echo "${varlocal[1]} = ${arry[$num]}"
  9. while [ ! "${varlocal[1]}" = "${arry[$num]}" ]
  10. do
  11. echo "${arry[${num}]}"' 0 Q'
  12. num=$(expr $num + 1)
  13. [ "$num" -eq "12" ]&&num=0
  14. done
  15. echo "$Line"
  16. num=$(expr $num + 1)
  17. [ "$num" -eq "12" ]&&num=0
  18. done < data.txt
復(fù)制代碼
$ cat data.txt
A001 9725.11 A
A021 8856.12 M
A023 9925.17 P
A025 0012.45 O
A031 1010.11 K
A093 2001.59 L
A095 4500.09 Y
A001 9725.11 A
A021 8856.12 M
A023 9925.17 P
A025 0012.45 O
A031 1010.11 K
A093 2001.59 L
A095 4500.09 Y


$ ./tt1.sh
A001 9725.11 A
A002 0 Q
A021 8856.12 M
A022 0 Q
A023 9925.17 P
A025 0012.45 O
A027 0 Q
A029 0 Q
A031 1010.11 K
A093 2001.59 L
A094 0 Q
A095 4500.09 Y
A001 9725.11 A
A002 0 Q
A021 8856.12 M
A022 0 Q
A023 9925.17 P
A025 0012.45 O
A027 0 Q
A029 0 Q
A031 1010.11 K
A093 2001.59 L
A094 0 Q
A095 4500.09 Y

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2004-11-02 17:30 |只看該作者

請(qǐng)求shell朋友的幫助!

[quote]原帖由 "guangzongy"][/quote 發(fā)表:

OK!
謝謝!

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2004-11-02 20:35 |只看該作者

請(qǐng)求shell朋友的幫助!

  1. touch okfile
  2. while read line
  3.         do
  4.         if grep "$line" datas>/dev/null 2>&1
  5.                 then line=$(grep "$line" datas)
  6.                 else line=$(echo "$line" 0 Q)
  7.         fi
  8.         echo $line>>okfile
  9.         done<file
  10. mv okfile datas
復(fù)制代碼


測試通過

論壇徽章:
1
榮譽(yù)會(huì)員
日期:2011-11-23 16:44:17
5 [報(bào)告]
發(fā)表于 2004-11-02 20:39 |只看該作者

請(qǐng)求shell朋友的幫助!

原帖由 "bitbull" 發(fā)表:

測試通過

不錯(cuò)~~~    

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2004-11-02 21:11 |只看該作者

請(qǐng)求shell朋友的幫助!

原帖由 "哈" 發(fā)表:
如果有兩個(gè)或兩個(gè)以上連續(xù)的單位缺失時(shí),結(jié)果就不對(duì)了,希望大家?guī)兔Γ?br /> 謝謝


在unix5.0.5下通過:

nawk ' BEGIN { i = 1; while((getline < "datas" > 0){
F = $1; S = $2; T = $3; i++ } line = i }
iFound = 0;
{ for(j = 1; j<= line; j++){
if($1 ==  f){
printf("%s %12.2f %s\n", F[j], S[j], T[j])
iFound =1;}
}
if(!iFound) printf("%s %12.2f Q\n", $0, 0);}'  dwbh

其中:datas 為數(shù)據(jù)文件,dwbh 為單位代碼文件。

論壇徽章:
1
榮譽(yù)會(huì)員
日期:2011-11-23 16:44:17
7 [報(bào)告]
發(fā)表于 2004-11-02 21:18 |只看該作者

請(qǐng)求shell朋友的幫助!

原帖由 "begincwcw" 發(fā)表:
und =1;}
}
if(!iFound) printf("%s %12.2f Q\n", $0, 0);}'  dwbh

其中:datas 為數(shù)據(jù)文件,dwbh 為單位代碼文件。

牛~~~~,高手也!!! 佩服!!!!

論壇徽章:
0
8 [報(bào)告]
發(fā)表于 2004-11-02 21:57 |只看該作者

請(qǐng)求shell朋友的幫助!

原帖由 "begincwcw" 發(fā)表:
und =1;}
}
if(!iFound) printf("%s %12.2f Q\n", $0, 0);}'  dwbh

其中:datas 為數(shù)據(jù)文件,dwbh 為單位代碼文件。


begincwcw兄是AWK方面的專家呀,HOHO~~
小弟正加油,受教
      

論壇徽章:
0
9 [報(bào)告]
發(fā)表于 2004-11-02 22:04 |只看該作者

請(qǐng)求shell朋友的幫助!

原帖由 "bitbull" 發(fā)表:


begincwcw兄是AWK方面的專家呀,HOHO~~
小弟正加油,受教
      


稱不上專家,用的比較多而已。

論壇徽章:
0
10 [報(bào)告]
發(fā)表于 2004-11-02 22:36 |只看該作者

請(qǐng)求shell朋友的幫助!

for name in `awk '{print $1}' 1`
do
        s1=`sed -n "/$name/"p 2`
        if [ "$s1" !=  "" ]
        then
                echo $s1
        else
                echo $name "0 Q"
        fi
done


1 is code file
2 is data file
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP