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

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

Chinaunix

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

求awk對(duì)文本重新排序 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2012-03-22 13:00 |只看該作者 |倒序?yàn)g覽
5可用積分
本帖最后由 waily 于 2012-03-22 15:00 編輯

文本如下,其實(shí)就是個(gè)pid為123下面的進(jìn)程樹
  1. # cat /tmp/test
  2. oss(123)|-mysqld_safe(3197)---mysqld(3286)-+-{mysqld}(3288)
  3.         |                                  |-{mysqld}(3289)
  4.         |                                  |-{mysqld}(3290)
  5.         |                                  |-{mysqld}(3291)
  6.         |                                  |-{mysqld}(3293)
  7.         |                                  |-{mysqld}(3295)
  8.         |                                  |-{mysqld}(3296)
  9.         |                                  |-{mysqld}(3297)
  10.         |                                  `-{mysqld}(3298)
  11.         |--pcscd(2110)---{pcscd}(2126)
復(fù)制代碼
要求按進(jìn)程樹的級(jí)別倒過來顯示pid,同一級(jí)的顯示次序無所謂,顯示結(jié)果應(yīng)該類似是這樣:


  1. 3288
  2. 3289
  3. 3290
  4. 3291
  5. 3293
  6. 3295
  7. 3296
  8. 3297
  9. 3298--------------從3288到這里是最后一級(jí)
  10. 3286
  11. 2126--------------3286和2126是第二級(jí)
  12. 3197
  13. 2110--------------3197和2110是第一級(jí)子進(jìn)程
  14. 123
復(fù)制代碼

最佳答案

查看完整內(nèi)容

刷分.sh:第一行第一個(gè)分支為什么是"|"不是加號(hào)??不知道你輸出的具體規(guī)則。 根據(jù)你這個(gè)例子,典型的HardCode, 追求簡單不算嚴(yán)密,前提是最深層的"+"號(hào)最早被展開。sort可用規(guī)則為深度和進(jìn)程號(hào),具體規(guī)則自己控制。awk就是C, 在shell版沒啥意義

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2012-03-22 13:00 |只看該作者
本帖最后由 MeaCulpa 于 2012-03-23 09:35 編輯

刷分.sh:
  1. awk '
  2. BEGIN { FS="||(-)+"; NXTBASE=0 }
  3. !/\+/ { NXTBASE = 0; }
  4. {
  5.     for (i=1; i <= NF; i++)
  6.     {
  7.         if ($i == "+"){ NXTBASE == i - 1;}
  8.         else if ( match( $i, "\\([0-9]+\\)" ) )
  9.         {
  10.             print NXTBASE+i, substr($i,RSTART+1,RLENGTH - 2);
  11.         }
  12.     }
  13. }
  14. ' $* | sort -r | cut -d' ' -f2
復(fù)制代碼
第一行第一個(gè)分支為什么是"|"不是加號(hào)??
不知道你輸出的具體規(guī)則。 根據(jù)你這個(gè)例子,典型的HardCode, 追求簡單不算嚴(yán)密,前提是最深層的"+"號(hào)最早被展開。
sort可用規(guī)則為深度和進(jìn)程號(hào),具體規(guī)則自己控制。

awk就是C, 在shell版沒啥意義

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2012-03-22 13:54 |只看該作者
3298--------------這里是最后一級(jí) ??????????
3289
3290
3291
3293
3295
3296
3297
3298 從樹上來看是同級(jí)別。??????????????

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2012-03-22 15:01 |只看該作者
不好意思,重新編輯了一下,剛才有點(diǎn)敲錯(cuò)了

從3288,.....到3298都是最后一級(jí)子進(jìn)程
回復(fù) 2# nuclearxin


   

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2012-03-22 15:05 |只看該作者
3298--------------從3288到這里是最后一級(jí)  
~~~~~~~~~
3288 是???
看不懂題

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2012-03-22 15:18 |只看該作者
本帖最后由 yuhuohu 于 2012-03-22 15:19 編輯

回復(fù) 4# nuclearxin


    我看懂了,我不會(huì)做

oss(123)|-mysqld_safe(3197)---mysqld(3286)-+-{mysqld}(3288)

                第一級(jí)子進(jìn)程 -----------第二級(jí)子進(jìn)程------------第三級(jí)子進(jìn)程

                |--pcscd(2110)---{pcscd}(2126)
                 第一級(jí)子進(jìn)程               第二級(jí)子進(jìn)程,這行沒有第三級(jí)子進(jìn)程

論壇徽章:
0
7 [報(bào)告]
發(fā)表于 2012-03-23 09:35 |只看該作者
回復(fù) 6# MeaCulpa


    其實(shí)我的最初目的是想殺死以某個(gè)進(jìn)程為根的下面所有進(jìn)程,我覺得要倒過來殺才保險(xiǎn),所以才有上述需求,謝謝哥們

論壇徽章:
0
8 [報(bào)告]
發(fā)表于 2012-03-23 09:43 |只看該作者
本帖最后由 yuhuohu 于 2012-03-23 09:45 編輯

回復(fù) 2# MeaCulpa


    誰給解釋一下BEGIN { FS="||(-)+"; NXTBASE=0 }


FS="||(-)+" 看不太明白(-)+是說1~N個(gè)-符號(hào),||是說兩個(gè)||嗎還是有特殊含義

論壇徽章:
0
9 [報(bào)告]
發(fā)表于 2012-03-23 10:19 |只看該作者
本帖最后由 MeaCulpa 于 2012-03-23 10:50 編輯
yuhuohu 發(fā)表于 2012-03-23 09:43
回復(fù) 2# MeaCulpa


FS代表分隔符。 “|”或者若干個(gè)"-" 作為分隔符!皘|” 中的后一個(gè)“|”是正則【或】

NXTBASE其實(shí)是記錄加號(hào)出現(xiàn)的位置,一旦出現(xiàn)加號(hào),下面的層次就要依據(jù)加號(hào)的位置往下

上面的腳本有bug, 一旦一行有兩個(gè)路過的"|", 就不對(duì)了,大清早的...我再想想...

大概要拿這樣的測試


  1. oss(123)|-mysqld_safe(3197)-+-mysqld(3286)-+-{mysqld}(3288)
  2.         |                   |              |-{mysqld}(3289)
  3.         |                   |              |-{mysqld}(3290)
  4.         |                   |              |-{mysqld}(3291)
  5.         |                   |              |-{mysqld}(3293)
  6.         |                   |              |-{mysqld}(3295)
  7.         |                   |              |-{mysqld}(3296)
  8.         |                   |              |-{mysqld}(3297)
  9.         |                   |              |-{mysqld}(3298)
  10.         |                   |
  11.         |                   |--{mysqld}(3199)---{mysqld}(3200)
  12.         |
  13.         |--pcscd(2110)---{pcscd}(2126)

復(fù)制代碼

論壇徽章:
0
10 [報(bào)告]
發(fā)表于 2012-03-23 10:59 |只看該作者
回復(fù) 9# MeaCulpa


    很感謝,呵呵
您需要登錄后才可以回帖 登錄 | 注冊(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