關於awk的逗號問題

2022-06-10 12:18:09 字數 1295 閱讀 1125

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

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

前期準備工作

(i)b.txt文字內容:

(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 

情況二、匹配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的行都列印出來

第 1 大題的第 2 行

awk 輸出字段使用逗號

日誌處理的時候經常會使用awk命令,如對日誌進行分割輸出等,輸出的時候預設使用空格進行分割,如 原日誌這裡是一行日誌 userid 123456,mobile 1234567382 cat test.log awk f userid 會輸出 123456,mobile 1234567382 如果只想...

關於awk命令的使用

sed針對行,awk針對列 awk awk 選項 條件 檔名 awk 選項 beginend 檔名 指令 print awk a.txt 選項 f 指定分隔符 awk f etc passwd usr bin 2 awk常見的內建變數 0 文字當前行的全部內容 1 文字的第一列 2 文字的第二列 3...

c 逗號表示式 關於逗號運算子的理解

在c語言中運算子有很多,包括算數運算子 關係運算子 賦值運算子 位運算子 邏輯運算子 三目運算子 sizeof運算子 逗號運算子等等,那今天我們就重點來給大家討論一下關於逗號運算子的一些運算規則。首先逗號運算子是非常簡單的,對於初學者來說,只要在相應的ide環境中進行測試便可以得到想要的結果 但是對...