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

  免費注冊 查看新帖 |

Chinaunix

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

[文本處理] (求助)使用shell命令按標(biāo)識分割文件 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2014-02-07 12:50 |只看該作者 |倒序瀏覽
一個文件內(nèi)容如下:
Service "syncdb" has 1 instance(s).
  Instance "syncdb", status READY, has 1 handler(s) for this service...
Service "syncdbXDB" has 2 instance(s).
  Instance "syncdb1", status READY, has 1 handler(s) for this service...
  Instance "syncdb2", status READY, has 1 handler(s) for this service...
Service "syncdb_XPT" has 1 instance(s).
  Instance "syncdb", status READY, has 1 handler(s) for this service...



使用什么shell命令可以將上面的文件分割為以下3個文件:

第一個文件:
Service "syncdb" has 1 instance(s).
  Instance "syncdb", status READY, has 1 handler(s) for this service...
第二個文件:
Service "syncdbXDB" has 2 instance(s).
  Instance "syncdb1", status READY, has 1 handler(s) for this service...
  Instance "syncdb2", status READY, has 1 handler(s) for this service...
第三個文件:
Service "syncdb_XPT" has 1 instance(s).
  Instance "syncdb", status READY, has 1 handler(s) for this service...

也就是按Service開頭為分割標(biāo)識,相鄰的兩個Service之間的行數(shù)是不確定的,可能是1行,也可能是n行。

謝謝!

論壇徽章:
0
2 [報告]
發(fā)表于 2014-02-07 13:13 |只看該作者
  1. awk '{if($1 == "Service" && $2 == "\"syncdb\""){n=$4+1;}else{;};if(n>0){print $0;n=n-1}}' data.txt > output
  2. awk '{if($1 == "Service" && $2 == "\"syncdbXDB\""){n=$4+1;}else{;};if(n>0){print $0;n=n-1}}' data.txt > output.XDB
  3. awk '{if($1 == "Service" && $2 == "\"syncdb_XPT\""){n=$4+1;}else{;};if(n>0){print $0;n=n-1}}' data.txt > output._XPT
復(fù)制代碼
僅供參考。

論壇徽章:
6
摩羯座
日期:2013-12-27 09:45:04技術(shù)圖書徽章
日期:2014-01-27 12:40:06辰龍
日期:2014-02-28 15:12:52巳蛇
日期:2014-03-21 17:06:27未羊
日期:2014-04-15 20:12:41黑曼巴
日期:2016-08-02 11:00:06
3 [報告]
發(fā)表于 2014-02-07 14:01 |只看該作者
回復(fù) 1# Pugna_zfr


    awk '/^Service/{file=$2;gsub(/\"/,"",file)}{print $0 > file}' service.txt

論壇徽章:
0
4 [報告]
發(fā)表于 2014-02-07 14:12 |只看該作者
回復(fù) 2# polyahu


    謝謝!
    我用 awk '{if($1 == "Service" && $2 !~/XDB/ && $2 !~/_XPT/ && $2 !~/PLSExtProc/){n=$4+1;}else{;};if(n>0){print $0;n=n-1}}' inputfile 基本達到要求了,就是有個點遺憾,不能自動按Service名稱分割。不過還是很不錯了!3Q

論壇徽章:
0
5 [報告]
發(fā)表于 2014-02-07 14:16 |只看該作者
回復(fù) 3# laliheyi


    試了下,好像有點問題。
    -bash-3.2$ lsnrctl status | awk '/^Service/{file=$2;gsub(/\"/,"",file)}{print $0 > file}'
    awk: (FILENAME=- FNR=1) fatal: expression for `>' redirection has null string value

    -bash-3.2$ awk --version
    GNU Awk 3.1.5

論壇徽章:
0
6 [報告]
發(fā)表于 2014-02-07 14:23 |只看該作者
回復(fù) 4# Pugna_zfr


    哦,不好意思,我剛才搞錯了。我把lsnrctl status的輸出內(nèi)容格式化成1L中的那樣是正常的。
    謝謝! :wink:

論壇徽章:
6
摩羯座
日期:2013-12-27 09:45:04技術(shù)圖書徽章
日期:2014-01-27 12:40:06辰龍
日期:2014-02-28 15:12:52巳蛇
日期:2014-03-21 17:06:27未羊
日期:2014-04-15 20:12:41黑曼巴
日期:2016-08-02 11:00:06
7 [報告]
發(fā)表于 2014-02-07 14:24 |只看該作者
回復(fù) 5# Pugna_zfr


   {:2_166:}  lsnrctl status 結(jié)果前面那部分結(jié)果你的需求中沒有給出。如果那部分不需要可以如此
awk '/^Service/{file=$2;gsub(/\"/,"",file)}file!=""{print $0 > file}'

論壇徽章:
50
15-16賽季CBA聯(lián)賽之廣夏
日期:2018-11-05 09:42:462015年亞冠紀(jì)念徽章
日期:2015-07-23 11:58:122015亞冠之廣州富力
日期:2015-07-07 08:26:172015亞冠之塔什干棉農(nóng)
日期:2015-06-29 09:08:072015年亞洲杯之伊朗
日期:2015-03-08 20:51:012015年迎新春徽章
日期:2015-03-04 09:58:11未羊
日期:2014-10-16 22:41:47處女座
日期:2014-10-16 15:33:33酉雞
日期:2014-03-13 12:54:10巳蛇
日期:2014-03-10 14:39:052015亞冠之德黑蘭石油
日期:2015-07-29 12:46:372015亞冠之德黑蘭石油
日期:2015-08-07 12:54:11
8 [報告]
發(fā)表于 2014-02-07 14:39 |只看該作者
回復(fù) 1# Pugna_zfr
  1. $awk '/^Service/{++i}{print >"file"i}' file

  2. $cat file
  3. Service "syncdb" has 1 instance(s).
  4.   Instance "syncdb", status READY, has 1 handler(s) for this service...
  5. Service "syncdbXDB" has 2 instance(s).
  6.   Instance "syncdb1", status READY, has 1 handler(s) for this service...
  7.   Instance "syncdb2", status READY, has 1 handler(s) for this service...
  8. Service "syncdb_XPT" has 1 instance(s).
  9.   Instance "syncdb", status READY, has 1 handler(s) for this service...

  10. $cat file1
  11. Service "syncdb" has 1 instance(s).
  12.   Instance "syncdb", status READY, has 1 handler(s) for this service...
  13. $cat file2
  14. Service "syncdbXDB" has 2 instance(s).
  15.   Instance "syncdb1", status READY, has 1 handler(s) for this service...
  16.   Instance "syncdb2", status READY, has 1 handler(s) for this service...
  17. $cat file3
  18. Service "syncdb_XPT" has 1 instance(s).
  19.   Instance "syncdb", status READY, has 1 handler(s) for this service...
復(fù)制代碼

論壇徽章:
0
9 [報告]
發(fā)表于 2014-02-07 14:45 |只看該作者
回復(fù) 7# laliheyi


    嗯。

命令中的 print $0 > file 看不太明白。file是前面的service名稱,$0是匹配到以Service開頭的每一行嗎?
我改了下這個命令,感覺$0是把每一行都匹配了,不管是否以Service開頭。但是,如果$0是每一行的話,直接用 > 到文件,居然沒有把原文件的內(nèi)容(即剛剛輸出到文件的上一行內(nèi)容)覆蓋???
a.txt中是格式化好的文本內(nèi)容。

-bash-3.2$ awk '/^Service/{file=$2;gsub(/\"/,"",file)}{print "test line\n"$0}' a.txt
test line
Service "PLSExtProc" has 1 instance(s).
test line
  Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
test line
Service "syncdb" has 1 instance(s).
test line
  Instance "syncdb", status READY, has 1 handler(s) for this service...
test line
Service "syncdbXDB" has 1 instance(s).
test line
  Instance "syncdb", status READY, has 1 handler(s) for this service...
test line
Service "syncdb_XPT" has 1 instance(s).
test line
  Instance "syncdb", status READY, has 1 handler(s) for this service...

論壇徽章:
0
10 [報告]
發(fā)表于 2014-02-07 14:50 |只看該作者
回復(fù) 8# WilliBhamlll


    這個 awk '/^Service/{++i}{print >"file"i}' file 是不是匹配以Service開頭的內(nèi)容,如果匹配到就執(zhí)行{++i}{print >"file"i} ,直到遇到下一個匹配Service開頭的行,再執(zhí)行{++i}{print >"file"i} ,然后一直這么循環(huán)下去,直到讀取完文件的內(nèi)容 ??
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(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
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP