亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区
Chinaunix
標(biāo)題:
請教awk過濾行中空格或\t
[打印本頁]
作者:
ccjsj1
時間:
2016-03-08 22:33
標(biāo)題:
請教awk過濾行中空格或\t
本帖最后由 ccjsj1 于 2016-03-08 22:35 編輯
如下:將每3行按一行輸出,做下對齊,但第6行和第9行是以空格或\t開頭,用gsub過濾不掉--!
neo@asterisk:/tmp$ cat 3.log
STATUS
------------
OPEN
SESSION_ACTIVE
--------------
30
SESSION_CURCOUNT
----------------
463
PROCESSES_ALLCOUNT
------------------
10000
neo@asterisk:/tmp$ cat -A 3.log
STATUS$
------------$
OPEN$
SESSION_ACTIVE$
--------------$
^I30$
SESSION_CURCOUNT$
----------------$
^I463$
PROCESSES_ALLCOUNT$
------------------$
10000$
neo@asterisk:/tmp$ cat 3.log | awk '{if($0~"STATUS") a=1; if(a!=3) {gsub(/\t/,""); printf("%-20s",$0); a++ } else {print $0; a=1}}'
STATUS ------------ OPEN
SESSION_ACTIVE -------------- 30
SESSION_CURCOUNT ---------------- 463
PROCESSES_ALLCOUNT ------------------ 10000
neo@asterisk:/tmp$ cat 3.log | awk '{if($0~"STATUS") a=1; if(a!=3) {gsub(/^ */,""); printf("%-20s",$0); a++ } else {print $0; a=1}}'
STATUS ------------ OPEN
SESSION_ACTIVE -------------- 30
SESSION_CURCOUNT ---------------- 463
PROCESSES_ALLCOUNT ------------------ 10000
neo@asterisk:/tmp$ cat 3.log | awk '{if($0~"STATUS") a=1; if(a!=3) {gsub(/^ */,""); printf("%-20s",$0); a++ } else {print $0; a=1}}' | cat -A
STATUS ------------ OPEN$
SESSION_ACTIVE -------------- ^I30$
SESSION_CURCOUNT ---------------- ^I463$
PROCESSES_ALLCOUNT ------------------ 10000$
復(fù)制代碼
作者:
Herowinter
時間:
2016-03-08 23:18
回復(fù)
1#
ccjsj1
cat 3.log|xargs -n 3|column -t
STATUS ------------ OPEN
SESSION_ACTIVE -------------- 30
SESSION_CURCOUNT ---------------- 463
PROCESSES_ALLCOUNT ------------------ 10000
復(fù)制代碼
作者:
ccjsj1
時間:
2016-03-09 08:54
回復(fù)
2#
Herowinter
感謝這末快的回復(fù)!結(jié)果也是期望的
!還是想用awk來實現(xiàn),不知有什末辦法沒有?謝謝!
作者:
jcdiy0601
時間:
2016-03-09 09:35
sed -e 's/^\s*//;N;N;s/\n/ /g' file |column -t
STATUS ------------ OPEN
SESSION_ACTIVE -------------- 30
SESSION_CURCOUNT ---------------- 463
PROCESSES_ALLCOUNT ------------------ 10000
復(fù)制代碼
作者:
zxy877298415
時間:
2016-03-09 09:43
awk '{if(NR%3==0) {print gensub(" ","","G",$0)} else {printf("%-20s",$0)}}' file
復(fù)制代碼
回復(fù)
1#
ccjsj1
作者:
ccjsj1
時間:
2016-03-09 10:45
本帖最后由 ccjsj1 于 2016-03-09 10:45 編輯
回復(fù)
4#
jcdiy0601
謝謝回復(fù)!結(jié)果是想要的
!sed一直沒學(xué)明白
想用awk實現(xiàn)
作者:
Herowinter
時間:
2016-03-09 10:45
回復(fù)
3#
ccjsj1
首先回答你的疑問, 空格 \t不是沒有成功替換, 而是你沒有讓awk對$0重新進(jìn)行賦值($1=$1).
比較下這兩段代碼的輸出就知道了.
awk '{gsub(/^\s*/,"");print}' test
STATUS
------------
OPEN
SESSION_ACTIVE
--------------
30
SESSION_CURCOUNT
----------------
463
PROCESSES_ALLCOUNT
------------------
10000
awk '{gsub(/^\s*/,"");$1=$1;print}' test
STATUS
------------
OPEN
SESSION_ACTIVE
--------------
30
SESSION_CURCOUNT
----------------
463
PROCESSES_ALLCOUNT
------------------
10000
復(fù)制代碼
用awk結(jié)合column -t也可以, 非要拿掉column -t自己去負(fù)責(zé)對齊吧.
awk '{s=s"\t"$1} NR%3==0{print s;s=""}' test|column -t
STATUS ------------ OPEN
SESSION_ACTIVE -------------- 30
SESSION_CURCOUNT ---------------- 463
PROCESSES_ALLCOUNT ------------------ 10000
復(fù)制代碼
作者:
elu_ligao
時間:
2016-03-09 10:46
回復(fù)
1#
ccjsj1
你那里有點問題, gsub放錯地方了
awk '{if($0~"STATUS") a=1; if(a!=3) {printf("%-20s",$0); a++ } else {gsub(/\t/,"");print $0; a=1}}'
復(fù)制代碼
作者:
ccjsj1
時間:
2016-03-09 11:33
回復(fù)
5#
zxy877298415
試了下還是不行啊
neo@asterisk:~/check_log/awk$ cat 3.log
STATUS
------------
OPEN
SESSION_ACTIVE
--------------
30
SESSION_CURCOUNT
----------------
463
PROCESSES_ALLCOUNT
------------------
10000
neo@asterisk:~/check_log/awk$ awk '{if(NR%3==0) {print gensub(" ","","G",$0)} else {printf("%-20s",$0)}}' 3.log
STATUS ------------ OPEN
SESSION_ACTIVE -------------- 30
SESSION_CURCOUNT ---------------- 463
PROCESSES_ALLCOUNT ------------------ 10000
neo@asterisk:~/check_log/awk$ awk '{if(NR%3==0) {print gensub(" ","","G",$0)} else {printf("%-20s",$0)}}' 3.log | cat -A
STATUS ------------ OPEN$
SESSION_ACTIVE -------------- ^I30$
SESSION_CURCOUNT ---------------- ^I463$
PROCESSES_ALLCOUNT ------------------ 10000$
neo@asterisk:~/check_log/awk$
復(fù)制代碼
作者:
ccjsj1
時間:
2016-03-09 11:36
本帖最后由 ccjsj1 于 2016-03-09 11:47 編輯
回復(fù)
7#
Herowinter
你好,非常感謝!
不用重新賦值也是可以的(這是$0的內(nèi)容已經(jīng)修改了吧),如下:
neo@asterisk:~/check_log/awk$ awk '{gsub(/^\s*/,"");print $0}' 3.log
STATUS
------------
OPEN
SESSION_ACTIVE
--------------
30
SESSION_CURCOUNT
----------------
463
PROCESSES_ALLCOUNT
------------------
10000
neo@asterisk:~/ch
復(fù)制代碼
作者:
ccjsj1
時間:
2016-03-09 11:51
回復(fù)
8#
elu_ligao
多謝了,這個可以的!
將下面內(nèi)容放到第二個if前面也可以,每行都替換下;
gsub(/\t/,""
作者:
elu_ligao
時間:
2016-03-09 11:58
回復(fù)
11#
ccjsj1
嗯, 當(dāng)然, 我看你的代碼, 意思好像是3的倍數(shù)的行就gsub,else 里面才是3倍數(shù)所在行執(zhí)行的操作
作者:
blackold
時間:
2016-03-09 12:01
回復(fù)
7#
Herowinter
有沒有弄錯呢?
作者:
blackold
時間:
2016-03-09 12:03
本帖最后由 blackold 于 2016-03-09 12:13 編輯
回復(fù)
9#
ccjsj1
不是不行,因為
" "
復(fù)制代碼
空白地方,人家用的是<tab>,而你用的是<space>。 肯定不行了。
你用/\t/ 或 /\s/ 代替 " " 試試:
awk '{if(NR%3==0) {print gensub(/\t/,"","G",$0)} else {printf("%-20s",$0)}}' urfile
復(fù)制代碼
awk '{if(NR%3==0) {print gensub(/\s/,"","G",$0)} else {printf("%-20s",$0)}}' urfile
復(fù)制代碼
或者
awk 'NR%3{printf("%-20s",$0);next}{gsub(/\t/,"");}1' urfile
復(fù)制代碼
作者:
blackold
時間:
2016-03-09 12:08
回復(fù)
8#
elu_ligao
贊!
作者:
ccjsj1
時間:
2016-03-09 12:37
回復(fù)
15#
blackold
明白了,多謝黑哥!
這末多方法,越來越簡練!
作者:
Herowinter
時間:
2016-03-09 13:17
回復(fù)
13#
blackold
是我搞錯了, 沒有替換成功.
作者:
jcdiy0601
時間:
2016-03-10 09:09
回復(fù)
6#
ccjsj1
我也是在學(xué)習(xí),你的思路也很好
作者:
baby_神
時間:
2016-03-19 23:52
又學(xué)到一個新的函數(shù)用法,這個在書上好像沒見過,不錯
回復(fù)
5#
zxy877298415
作者:
ccjsj1
時間:
2016-03-21 12:43
回復(fù)
19#
時時20160307
不錯,又學(xué)了一招,謝謝!
歡迎光臨 Chinaunix (http://www.72891.cn/)
Powered by Discuz! X3.2