[20210924]awk奇怪的輸出.txt
[20210924]awk奇怪的輸出.txt
--//昨天在分析問題時使用awk,遇到一些奇怪的問題,做一個記錄並加入自己的理解與分析:
.
1.環境:
SCOTT@test01p> @ ver1
PORT_STRING VERSION BANNER CON_ID
------------------------------ -------------- -------------------------------------------------------------------------------- ----------
IBMPC/WIN_NT64-9.1.0 12.2.0.1.0 Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production 0
2.測試:
$ sqlplus -s -l scott/btbtms@test01p <<< "select empno,deptno,sal from emp where 1=0;"
no rows selected
$ sqlplus -s -l scott/btbtms@test01p <<< "select empno,deptno,sal from emp where rownum<=5;"
EMPNO DEPTNO SAL
---------- ---------- ----------
7369 20 800
7499 30 1600
7521 30 1250
7566 20 2975
7654 30 1250
$ sqlplus -s -l scott/btbtms@test01p <<< "select empno,deptno,sal from emp where rownum<=5;" | tr -d '\r' | awk '$2>=30 {print $0 }'
EMPNO DEPTNO SAL
7499 30 1600
7521 30 1250
7654 30 1250
$ sqlplus -s -l scott/btbtms@test01p <<< "select empno,deptno,sal from emp where rownum<=5;" | tr -d '\r' | awk '$2==30 {print $0 }'
7499 30 1600
7521 30 1250
7654 30 1250
$ sqlplus -s -l scott/btbtms@test01p <<< "select empno,deptno,sal from emp where rownum<=5;" | tr -d '\r' | awk '$2==20 {print $0 }'
7369 20 800
7566 20 2975
$ sqlplus -s -l scott/btbtms@test01p <<< "select empno,deptno,sal from emp where rownum<=5;" | tr -d '\r' | awk '$2==20 && $3>=1000 {print $0 }'
7566 20 2975
--//注:windows下使用cygwin輸出文字帶有\r,必須過濾掉,不然輸出混亂.
--//你可以發現一個現象,使用awk過濾,有時輸出header有一些沒有,但是不會輸出分隔線---.為什麼呢?
--// 字元 - 2 3 D對應的ascii碼如下:
--// - = 2d
--// 2 = 32
--// 3 = 33
--// D = 44
--//你可以發現條件 $2>=30 出現header的主要原因是awk把它當作字串處理的,或者講當$2是字串時,條件變成了 $2 >= '30';這樣輸
--//出在條件$2>=30的情況下輸出header就很正常了.等價於如下:
$ sqlplus -s -l scott/btbtms@test01p <<< "select empno,deptno,sal from emp where rownum<=5;" | tr -d '\r' | awk '$2>='30' {print $0 }'
EMPNO DEPTNO SAL
7499 30 1600
7521 30 1250
7654 30 1250
$ sqlplus -s -l scott/btbtms@test01p <<< "select empno,deptno,sal from emp where rownum<=5;" | tr -d '\r' | awk '$2>="30" {print $0 }'
EMPNO DEPTNO SAL
7499 30 1600
7521 30 1250
7654 30 1250
--//如何取消呢?很簡單加入一點點運算,修改如下:
$ sqlplus -s -l scott/btbtms@test01p <<< "select empno,deptno,sal from emp where rownum<=5;" 2>&1 | tr -d '\r' | awk '$2*1>=30 {print $0 }'
7499 30 1600
7521 30 1250
7654 30 1250
$ sqlplus -s -l scott/btbtms@test01p <<< "select empno,deptno,sal from emp where rownum<=5;" 2>&1 | tr -d '\r' | awk '$2+0>=30 {print $0 }'
7499 30 1600
7521 30 1250
7654 30 1250
--//將條件修改為$2*1>=30 或者 $2+0 >=30 就可以過濾header.
--//不知道各位還有什麼好方法,大家給一個建議.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2793404/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [20210924]awk奇怪的輸出2.txt
- [20220822]奇怪的ashtop輸出.txt
- [20211111]奇怪的ashtop輸出.txt
- [20230405]奇怪的顯示輸出寬度.txt
- [20230905]奇怪的語法.txt
- [20221020]奇怪的增量備份.txt
- [20210802]grep奇怪的過濾.txt
- [20201106]奇怪的awr報表.txt
- [20181120]奇怪的insert語句.txt
- 很奇怪,echo substr ('470482916035',-6);// 輸出是 035
- [20210419]避免冗餘的輸出.txt
- [20190524]sqlplus 與輸出&.txtSQL
- [20231012]奇怪的執行時長.txt
- [20230426]奇怪的AVG_IOW_MS.txt
- [20190306]奇怪的查詢結果.txt
- [20200208]awk學習例子.txt
- [20241112]無法理解sqlplus的輸出.txtSQL
- [20191119]探究ipcs命令輸出.txt
- [20200317]NULL與排序輸出.txtNull排序
- [20221103]奇怪的mail資訊(整理版本).txtAI
- [20211018]奇怪的歸檔目的地.txt
- [20211210]優化遇到的奇怪問題.txt優化
- [20180417]奇怪的grep過濾問題.txt
- awk 技巧之輸出單引號和雙引號
- [20211020]奇怪lsnrctl status顯示.txt
- [20191202]awk使用陣列技巧.txt陣列
- [20210318]awk分割符FS.txt
- [20231124]奇怪的高邏輯讀4.txt
- [20230216]奇怪的高邏輯讀3.txt
- [20220811]奇怪的隱式轉換問題.txt
- [20190324]奇怪的GV$FILESPACE_USAGE檢視.txt
- [20210902]cut使用輸出問題.txt
- [20200306]expand格式化輸出.txt
- [20190720]sqlplus 與輸出& 2.txtSQL
- [20210301]延遲顯示輸出.txt
- [20211026]奇怪註解不起作用.txt
- [20210420]19c奇怪的過濾條件.txt
- [20181201]奇怪的INDEX SKIP SCAN執行計劃.txtIndex