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

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 1505 | 回復: 8
打印 上一主題 下一主題

[文本處理] 文件內(nèi)容分類顯示的問題 [復制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2015-05-06 10:19 |只看該作者 |倒序瀏覽
本帖最后由 a307847162 于 2015-05-07 18:31 編輯

以下是要處理的文本文件里的內(nèi)容:

/xxx/xxxxx/lishugao_test/case_lishugao.sh:打開或讀取失敗
sha1sum: /xxx/xxxxx/lishugao_test/a.sh: 沒有那個文件或目錄
/xxx/xxxxx/lishugao_test/a.sh:打開或讀取失敗
sha1sum: /xxx/xxxxx/lishugao_test/log2.txt: 沒有那個文件或目錄
/xxx/xxxxx/lishugao_test/log2.txt:打開或讀取失敗
sha1sum: /xxx/xxxxx/lishugao_test/ok.sh: 沒有那個文件或目錄
/xxx/xxxxx/lishugao_test/ok.sh:打開或讀取失敗
sha1sum: /xxx/xxxxx/lishugao_test/passwordok.sh: 沒有那個文件或目錄
/xxx/xxxxx/lishugao_test/passwordok.sh:打開或讀取失敗
sha1sum: /xxx/xxxxx/lishugao_test/password.sh: 沒有那個文件或目錄
/xxx/xxxxx/lishugao_test/password.sh:打開或讀取失敗
sha1sum: /xxx/xxxxx/lishugao_test/d.sh: 沒有那個文件或目錄
/xxx/xxxxx/lishugao_test/d.sh:打開或讀取失敗
sha1sum: /xxx/xxxxx/lishugao_test/g.sh: 沒有那個文件或目錄
/xxx/xxxxx/lishugao_test/g.sh:打開或讀取失敗
/xxx/xxxxx/lishugao/b.sh: 確定
/xxx/xxxxx/lishugao/b: 確定
/xxx/xxxxx/lishugao/c: 確定
/xxx/xxxxx/lishugao/sha.sha: 失敗
/xxx/xxxxx/lishugao/a: 確定
/xxx/xxxxx/lishugao/a.sh: 確定



我想要寫個shell,把上訴內(nèi)容處理完后顯示如下:
-----------------------------------------以下是確定的內(nèi)容--------------------------------------------------------/xxx/xxxxx/lishugao/b.sh: 確定
/xxx/xxxxx/lishugao/b: 確定
/xxx/xxxxx/lishugao/c: 確定
-----------------------------------------以上是確定的內(nèi)容--------------------------------------------------------

-----------------------------------------以下是沒有的文件或目錄--------------------------------------------------
sha1sum: /xxx/xxxxx/lishugao_test/g.sh: 沒有那個文件或目錄
-----------------------------------------以上是沒有的文件或目錄--------------------------------------------------

-----------------------------------------以下是打開或讀取失敗的內(nèi)容----------------------------------------------
/xxx/xxxxx/lishugao_test/d.sh:打開或讀取失敗
-----------------------------------------以上是打開或讀取失敗的內(nèi)容----------------------------------------------

-----------------------------------------以下是失敗的內(nèi)容--------------------------------------------------------
/xxx/xxxxx/lishugao/sha.sha: 失敗
-----------------------------------------以上是失敗的內(nèi)容--------------------------------------------------------



望各位大俠不吝賜教


2015.5.7   sort -t ':' -k 3   以:為分隔按照第三列的內(nèi)容來排序,這個可以排一下序,但是離我想要的結(jié)果還有點區(qū)別,繼續(xù)努力

論壇徽章:
145
技術(shù)圖書徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11獅子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龍
日期:2014-01-08 15:26:12技術(shù)圖書徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
2 [報告]
發(fā)表于 2015-05-06 10:27 |只看該作者

論壇徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年紀念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役紀念章
日期:2022-04-24 14:33:24
3 [報告]
發(fā)表于 2015-05-06 10:48 |只看該作者
  1. echo -----------------------------------------以下是確定的內(nèi)容--------------------------------------------------------
  2. grep "確定" 1.txt
  3. echo -----------------------------------------以上是確定的內(nèi)容--------------------------------------------------------
  4. echo ""
  5. echo -----------------------------------------以下是沒有的文件或目錄--------------------------------------------------
  6. grep "沒有" 1.txt
  7. echo -----------------------------------------以上是沒有的文件或目錄--------------------------------------------------
  8. echo ""
  9. echo -----------------------------------------以下是打開或讀取失敗的內(nèi)容----------------------------------------------
  10. grep "或" 1.txt
  11. echo -----------------------------------------以上是打開或讀取失敗的內(nèi)容----------------------------------------------
  12. echo ""
  13. echo -----------------------------------------以下是失敗的內(nèi)容--------------------------------------------------------
  14. grep "失敗" 1.txt | grep -v "或"
  15. echo -----------------------------------------以上是失敗的內(nèi)容--------------------------------------------------------
復制代碼

論壇徽章:
0
4 [報告]
發(fā)表于 2015-05-06 11:39 |只看該作者
回復 3# Shell_HAT


    這個方法是可以的
但是用在我的腳本里就顯得效率很低了,不知道怎么優(yōu)化


diffsha(){
    for ((i=1;i<=`cat log.txt|wc -l`;i++))
    do
       line=`sed -n "${i}p" log.txt`
       IP=`echo $line|awk '{print $1}'`
       user=`echo $line|awk '{print $2}'`
       PASS=`echo $line|awk '{print $3}'`
       hostsha=`echo $line|awk '{print $4}'`
       difffile=`echo $line|awk '{print $5}'`
   expect -c "
   set timeout -1;
   spawn ssh $user@$IP sha1sum -c $difffile$hostsha
   expect {
        "*yes/no" {send "yes"\r;exp_continue}
        "*assword*" {send $PASS\r}
   }
   interact;"
     if [ $? = 0 ]
     then
        echo "------------------------------------------------------------------------------------------------------"
        echo "遠程執(zhí)行sha1sum成功!"
        echo "------------------------------------------------------------------------------------------------------"
     else
         echo "-----------------------------------------------------------------------------------------------------"
         echo "遠程執(zhí)行sha1sum失。"
         echo "-----------------------------------------------------------------------------------------------------"
    fi
     done
   }
while true
do
echo "*************************************************"
echo "#    1.獲取本機的哈希值                                       #"
echo "#    2.分發(fā)哈希值文件到遠程主機                               #"
echo "#    3.遠程比較哈希值                                         #"
echo "#    4.退出                                                   #"
echo "#    BY:李XX  QQ:7560171X   2015.5.6                         #"
echo "*************************************************"
    echo -n "請輸入要執(zhí)行的操作前面的數(shù)字并敲回車鍵:"
    read xuan
    case $xuan in
      1) getsha;;
      2) scpsha;;
      3) echo '-----------------以下是哈希值一致的文件--------------------------------------'
         diffsha | grep -F 確定
         echo '-----------------以下是服務器B上不存在的文件---------------------------------'
         diffsha | grep -F 打開或讀取失敗
         echo '-----------------以下是哈希值一致的目錄及其文件------------------------------'
         diffsha | grep -F 沒有那個文件或目錄
         echo '-----------------以下是哈希值不一致的文件------------------------------------'
         diffsha | grep -F ': 失敗'
         ;;
      *) exit 0;;
     esac
done

論壇徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年紀念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役紀念章
日期:2022-04-24 14:33:24
5 [報告]
發(fā)表于 2015-05-06 13:10 |只看該作者
本帖最后由 Shell_HAT 于 2015-05-06 13:12 編輯

回復 4# a307847162


1、你覺得哪部分效率低?如果單純覺得代碼太長那就另說了。代碼長度和效率不見得成正比。
2、如果你說的效率低是指處理時間長,請給出現(xiàn)在這個代碼的處理時間,也好相互比較。

可以先考慮執(zhí)行一次 diffsha 把結(jié)果放到臨時文件里面,然后處理這個臨時文件,而不是重復調(diào)用4次 diffsha

論壇徽章:
0
6 [報告]
發(fā)表于 2015-05-06 14:02 |只看該作者
本帖最后由 a307847162 于 2015-05-06 14:09 編輯

回復 5# Shell_HAT


    還是有點低,應該是執(zhí)行一次diffsha得到一個服務器的反饋信息,然后直接用個語句對這串信息進行處理,處理成我想要的那種分類,tee保存成文件并在屏幕上打印,然后繼續(xù)diffsha下一個服務器,并對信息進行分類處理,直到配置文件log.txt里列舉的服務器信息檢測完為止才對

論壇徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年紀念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役紀念章
日期:2022-04-24 14:33:24
7 [報告]
發(fā)表于 2015-05-06 14:10 |只看該作者
回復 6# a307847162


    沒問題,就按照這個思路做吧,總之比你重復調(diào)用函數(shù)強。

論壇徽章:
0
8 [報告]
發(fā)表于 2015-05-06 14:34 |只看該作者
回復 7# Shell_HAT


    關鍵的問題就是,我不知道用什么語句可以對這串信息進行分類成我想要的樣子

論壇徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年紀念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役紀念章
日期:2022-04-24 14:33:24
9 [報告]
發(fā)表于 2015-05-06 14:55 |只看該作者
回復 8# a307847162
  1. diffsha(){
  2.     for ((i=1;i<=`cat log.txt|wc -l`;i++))
  3.     do
  4.        line=`sed -n "${i}p" log.txt`
  5.        IP=`echo $line|awk '{print $1}'`
  6.        user=`echo $line|awk '{print $2}'`
  7.        PASS=`echo $line|awk '{print $3}'`
  8.        hostsha=`echo $line|awk '{print $4}'`
  9.        difffile=`echo $line|awk '{print $5}'`
  10.    expect -c "
  11.    set timeout -1;
  12.    spawn ssh $user@$IP sha1sum -c $difffile$hostsha
  13.    expect {
  14.         "*yes/no" {send "yes"\r;exp_continue}
  15.         "*assword*" {send $PASS\r}
  16.    }
  17.    interact;"
  18.      if [ $? = 0 ]
  19.      then
  20.         echo "------------------------------------------------------------------------------------------------------"
  21.         echo "遠程執(zhí)行sha1sum成功!"
  22.         echo "------------------------------------------------------------------------------------------------------"
  23.      else
  24.          echo "-----------------------------------------------------------------------------------------------------"
  25.          echo "遠程執(zhí)行sha1sum失敗!"
  26.          echo "-----------------------------------------------------------------------------------------------------"
  27.     fi
  28.      done
  29.    }
  30. while true
  31. do
  32. echo "*************************************************"
  33. echo "#    1.獲取本機的哈希值                                       #"
  34. echo "#    2.分發(fā)哈希值文件到遠程主機                               #"
  35. echo "#    3.遠程比較哈希值                                         #"
  36. echo "#    4.退出                                                   #"
  37. echo "#    BY:李XX  QQ:7560171X   2015.5.6                         #"
  38. echo "*************************************************"
  39.     echo -n "請輸入要執(zhí)行的操作前面的數(shù)字并敲回車鍵:"
  40.     read xuan
  41.     case $xuan in
  42.       1) getsha;;
  43.       2) scpsha;;
  44.       3) str=$(diffsha)
  45.          echo '-----------------以下是哈希值一致的文件--------------------------------------'
  46.          echo "$str" | grep -F 確定
  47.          echo '-----------------以下是服務器B上不存在的文件---------------------------------'
  48.          echo "$str" | grep -F 打開或讀取失敗
  49.          echo '-----------------以下是哈希值一致的目錄及其文件------------------------------'
  50.          echo "$str" | grep -F 沒有那個文件或目錄
  51.          echo '-----------------以下是哈希值不一致的文件------------------------------------'
  52.          echo "$str" | grep -F ': 失敗'
  53.          ;;
  54.       *) exit 0;;
  55.      esac
  56. done
復制代碼
您需要登錄后才可以回帖 登錄 | 注冊

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

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP