|
藍森林 http://www.lslnet.com 2006年6月26日 11:18
請教關於取文本的幾個小問題
比如說有很多類似的文件,名稱為 db_ora1_1122.trc, db_ora1_1123.trc, db_ora2_2122.trc,等等,每個文件中前幾行的內容如下:
*** SESSION ID:(498.56178) 2005-04-09 14:05:23.071
*** 2005-04-09 14:05:23.071
ksedmp: internal or fatal error
ORA-01652: unable to extend temp segment by 128 in tablespace TEMP
Current SQL statement for this session:
select count(*) from (select c.*,d.........
----- Call Stack Trace -----
。。。。。。(後面還有很多)
有兩個問題想請教大家;
1,如果像把每個文件中的第6行,取出來,然後放到一個單獨的文件中,然後追加到新文件中一個空行,然後再取一個行,追加到其中。。。
2,如果想把每個文件的以「Current SQL statement for this session:」開頭的一行開始,順次取5行,然後追加到新文件中一個空行,然後再取另一個文件的,。。。。。
3,如果想把每個文件的以「Current SQL statement for this session:」開頭,以「----- Call Stack Trace -----」結尾的一段話放到一個單獨的文件中,然後追加到新文件中一個空行,然後再取另一個文件的,。。。。。
先解過各位大俠。 |
請教關於取文本的幾個小問題
for i in db_ora*.trc; do sed -ne '6{G;p;q}' ; done >your-file
其它類推 |
請教關於取文本的幾個小問題
多謝 waker了,呵呵。
我是新手,手笨,可不可以再幫忙考慮一個問題啊:
比如,file1中有類似如下的內容:
err001... info...
aaaaa
bbbbb
trace file name is db_trace1_aaa.trc
...
err001... info...
ccccc
bbbbb
trace file name is db_trace2_bbb.trc
...
等等,也就是說,file1中,凡是以「err001」開頭到「trace file name」的結尾的這些片斷的內容是我需要的一部分信息。其中,db_trace1_aaa.trc和db_trace2_bbb.trc等等的trace文件中記錄了關於err001這個錯誤的相關跟蹤信息。我希望提取這部分內容放到一個log文件中,另外還有下面的:
db_trace1_aaa.trc等trace文件的內容類似於:
*** SESSION ID:(498.56178) 2005-04-09 14:05:23.071
*** 2005-04-09 14:05:23.071
ksedmp: internal or fatal error
ORA-01652: unable to extend temp segment by 128 in tablespace TEMP
Current SQL statement for this session:
select count(*) from (select c.*,d.........
----- Call Stack Trace -----
。。。。。。(後面還有很多)
我希望提取每個跟蹤文件的這部分內容再寫入到一個log文件中。
也就是說,最後生成的log文件的內容如下:
err001... info...
aaaaa
bbbbb
trace file name is db_trace1_aaa.trc
*** SESSION ID:(498.56178) 2005-04-09 14:05:23.071
*** 2005-04-09 14:05:23.071
ksedmp: internal or fatal error
ORA-01652: unable to extend temp segment by 128 in tablespace TEMP
Current SQL statement for this session:
select count(*) from (select c.*,d.........
----- Call Stack Trace -----
err001... info...
ccccc
bbbbb
trace file name is db_trace2_bbb.trc
*** SESSION ID:(111.5617222) 2005-04-09 14:05:23.071
*** 2005-06-29 02:05:23.071
ksedmp: internal or fatal error
ORA-01652: unable to extend temp segment by 128 in tablespace TEMP
Current SQL statement for this session:
select count(*) from (select c.*,d.........
----- Call Stack Trace -----
請問,大俠這個如何實現比較好啊?
也就是說,讀取一個文件的一段關鍵文字,得到trace文件名稱等關鍵信息,再去這個trace文件中讀取一段詳細的錯誤信息。
先謝過大俠了。 |
請教關於取文本的幾個小問題
up |
請教關於取文本的幾個小問題
這麼多大俠,哪位大俠幫忙看看吧,多謝了 :D |
請教關於取文本的幾個小問題
用awk就可以實現,先找到錯誤片斷寫入log,然後找到關聯文件,打開並
截取一段一併放入log。
只要把getline 命令用好就可以了。還有close,文件多了要及時關閉。 |
請教關於取文本的幾個小問題
非常感謝您的思路了,不過兄弟我最近學習shell的時間不常,這個活也是個著急的活,能夠請兄弟幫忙給出一段實例代碼,實在不好意思了,先寫過大俠了。 |
請教關於取文本的幾個小問題
不會是給JP賣命吧,那我就慘了。
[code]awk '/^err001/{print;getline;print;getline;print;getline;print
;f=$5;while($0!~"----- Call Stack Trace -----"){getline<f;print;};close(f);}' file1[/code] |
請教關於取文本的幾個小問題
非常感謝老大的例子,呵呵 :)
btw:
JP是什麼阿? :D |
請教關於取文本的幾個小問題
日本 |
請教關於取文本的幾個小問題
看起來時差很嚴重訥 :mrgreen: |
請教關於取文本的幾個小問題
沒給jp賣命,呵呵,是國產的公司 :) |
| |