awk '/select/{print {v"/n"$0}{v=$0}' ses.log

文本如下,我想把
下一行帶有select ...的語句過濾出來,怎么辦???
也就是把
形如
########################900599###
  select zx02 from zx_file where zx01 =?
的語句過濾出來。
而連續兩行都是
########################的不要。
只要下一行是select的語句。





########################900599###
  select zx02 from zx_file where zx01 =?
########################900229###
  select zx02 from zx_file where zx01 =?
########################899853###
  select zx02 from zx_file where zx01 =?
########################898603###
########################898600###
########################898598###
########################898592###
########################898589###
########################898579###
########################898578###

 

awk '/select/{print v"/n"$0}{v=$0}' file

 

回复 6# cheungjustin


    awk '/select/{print v"/n"$0}{v=$0}' file

########
v=$0  把本行存入变量v
/select/{print v"/n"$0}  当本行匹配select时,打印"变量v+换行+本行"(因v=$0还未执行,所以此时v为上行内容)
########

 

 

回复 7# ywlscpl


    awk '/select/{print v"/n"$0}' file

去掉賦值語句,按照大師的說法,應該是此時v也是沒有值,也應該把第一個select前面的一行列印出來嗎?
但是實際上去掉 {v=$0} 之後第一次select 前面的一行不會輸出啊?

 

 

回复 8# cheungjustin


{v=$0}不受前面的模式/select/的约束,也就是说,每一行都会执行{v=$0},所以它能取到select的上一行,把它去掉之后就达不到这个效果了。

 

 

  这个有问题。不循环的话,如果文本是这种

  1. ########################900599###
  2. ########################900599###
  3.   select zx02 from zx_file where zx01 =?
  4. ########################900229###
  5. ########################900599###
  6.   select zx02 from zx_file where zx01 =?
  7. ########################899853###
  8. ########################899853###
  9.   select zx02 from zx_file where zx01 =?
  10. ########################898603###
  11. ########################898600###
  12. ########################898598###
复制代码

就不行了

 

 

 

回复 14# ywlscpl


    考慮13樓兄弟的想法。

直接在ypwcpl兄弟的那個awk '/select{print v"/n"$0}{v=$0}' file
基礎上加個判斷可以嗎
也就是第一個print前面加個判斷,如果
v不匹配select就輸出 {print v"/n"$0}
否則直接賦值
{v=$0}
而不輸出

這樣要怎么寫呢?

 

 

回复 18# cheungjustin


    嗯,这也是一种思路
awk '/select/{print (v~/#+/?v"/n":"")$0}{v=$0}' file

阅读更多
文章标签: file
个人分类: linux
想对作者说点什么? 我来说一句

图的最短路径c++源程序

2010年06月28日 27KB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭