關於awk的逗號問題


對於awk逗號的問題,我昨天看的一本書有提過:  

   blob.png

   

   《Linux就是這個范兒》挺好的書,大家可以看看~~~~

    測試過,總結如下(不知道總結有沒有錯,歡迎大家吐槽,歡迎大家吐槽,吐槽,吐槽........)

    前期准備工作

    (i)b.txt文本內容:

blob.png

    (ii)逗號表達式形式: “字符串s1,字符串s2”

    (iii)n1: s1所在行;        n2:s2所在行  

 

############################################

注意:無論什么情況,都是優先匹配s1!!!     ——————防色盲系列

(非常符合人類從左到右看東西的習慣~總不會奇葩到從右往左看吧~~)

主要有 4 種情況

情況一、匹配s1,匹配s2

   (0)if (n1==n2)   僅打印匹配那行——》 n1  

   (1)if (n1 < n2),打印 [n1,n2] 行.       命令:awk '/78/,/21/' b.txt  

   (2)if (n1 > n2),打印 [n1,最后一行]  命令:awk '/21/,/78/' b.txt 

blob.png

 

情況二、匹配s1,不匹配s2

   結果同一的(2),打印 [n1,最后一行]

情況三、不匹配s1,匹配s2 

   匹配不上,什么都不打印

情況四、不匹配s1,不匹配s2 

   匹配不上,什么都不打印

 

###########################

那么前面提到的 awk '/Jan/,/nov/'b.txt 就很好理解了,就是情況一的(2)     

因為優先匹配n1(Jan所在行),而 nov 雖然也匹配了,但是由於n2(nov 所在行)在 n1 的前面,所以打印的時候就是打印 n1(Jan那行)到文本結尾

圖是這樣的:

我當時是這樣問的:

  awk '/Jan/,/nov/'b.txt  逗號表示什么意思,第一行打印出來好理解,因為有Jan,但后3行就不懂 了,明明都沒有Jan 或者 nov,不知道它是以什么標准來匹配的?

  awk '/Jan/;/nov/'b.txt  分號這個就好理解,就是或者的意思,把有Jan 或者 nov的行都打印出來

 

這條題目的鏈接:

http://www.cnblogs.com/emanlee/p/3327576.html

第 1 大題的第 2 行


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM