亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標(biāo)題: 文本內(nèi)容處理 [打印本頁]

作者: butterflyswim    時(shí)間: 2016-09-14 11:02
標(biāo)題: 文本內(nèi)容處理
文本
1.1.1.1 general/tcp GNU-Bash 1.0
2.2.2.2 general/tcp GNU-Bash 1.0
2.2.2.2 general/tcp HTTP-Brute 4.0
2.2.2.2 53/tcp VMSA-2015-0001:-VMware-vCenter-Server,-ESXi,-Workstation, 7.1
2.2.2.2 111/tcp VMSA-2015-0007:-VMware-ESXi-OpenSLP 3.0
3.3.3.3 general/tcp GNU-Bash-Environment 5.0
3.3.3.3 80/tcp HTTP-Brute-Force 2.0
......
......

目的
第一列ip相同的行,合并之后,用分號(hào)分隔

實(shí)現(xiàn)結(jié)果
1.1.1.1 general/tcp GNU-Bash 1.0
2.2.2.2 general/tcp GNU-Bash 1.0;general/tcp GNU-Bash;general/tcp HTTP-Brute 4.0;53/tcp VMSA-2015-0001:-VMware-vCenter-Server,-ESXi,-Workstation, 7.1;111/tcp VMSA-2015-0007:-VMware-ESXi-OpenSLP 3.0
3.3.3.3 general/tcp GNU-Bash-Environment 5.0;80/tcp HTTP-Brute-Force 2.0
......
......
作者: moperyblue    時(shí)間: 2016-09-14 11:10

  1. awk '{k=$1;$1="";a[k]=a[k]?a[k]";"$0:$0}END{for(i in a)print i,a[i]}'
復(fù)制代碼

作者: butterflyswim    時(shí)間: 2016-09-14 11:19
回復(fù) 2# moperyblue

謝大神

作者: moperyblue    時(shí)間: 2016-09-14 11:23

  1. sort file|sed -r ':a;N;/^((\S+\b).*)\n\2\s+/{s//\1;/;ta};P;D'
復(fù)制代碼

作者: butterflyswim    時(shí)間: 2016-09-14 14:44
回復(fù) 4# moperyblue

sed處理之后,沒有空格,很完美。awk處理之后有空格。速度哪個(gè)更快一點(diǎn)?
作者: moperyblue    時(shí)間: 2016-09-14 15:12
回復(fù) 5# butterflyswim

awk也可以去掉空格, 哪種快要你自己測才知道.
  1. awk '{k=$1;$1="";sub(/\s+/,"",$0);a[k]=a[k]?a[k]";"$0:$0}END{for(i in a)print i,a[i]}'
復(fù)制代碼

作者: sunzhiguolu    時(shí)間: 2016-09-14 15:37
  1. perl -0pe 's{^(\S+)\N+\K((?:\n?^\1\N+\n)+)}{$s=$1;$2=~s/\s*$s\s*/;/gr}gem' f
復(fù)制代碼

作者: sunzhiguolu    時(shí)間: 2016-09-14 15:44
  1. perl -nle '{($k,$v)=split(" ",$_,2);push(@{$h{$k}},$v)}END{print "$_ ",join(";",@{$h{$_}}) for keys %h}' f
復(fù)制代碼

作者: baby_神    時(shí)間: 2016-09-14 16:45
本帖最后由 baby_神 于 2016-09-14 16:47 編輯
  1. awk '{b=$1;$1="\b";a[b]=a[b]?a[b]","$0:$0}END{for(i in a)print i,a[i]}' file
復(fù)制代碼


作者: butterflyswim    時(shí)間: 2016-09-14 16:51
本帖最后由 butterflyswim 于 2016-09-14 16:52 編輯

回復(fù) 9# baby_神



作者: zy86416779    時(shí)間: 2016-09-15 21:49
請(qǐng)參考
  1. [root@study tmp]# cat paste.awk
  2. BEGIN{
  3.     f=0
  4. }

  5. {
  6.     if(f==0){
  7.         a[1]=$1
  8.         printf $0
  9.         getline
  10.     }
  11.     if(a[1]==$1){
  12.         printf ":" $2 " " $3 " " $4 " "
  13.         a[1]=$1
  14.         f=1
  15.         next
  16.     }

  17.     printf "\n"
  18.     printf $0
  19.     a[1]=$1
  20.     f=1
  21. }

  22. END{
  23.     printf "\n"
  24. }
  25. [root@study tmp]# awk -f paste.awk 1.txt         
  26. 1.1.1.1 general/tcp GNU-Bash 1.0
  27. 2.2.2.2 general/tcp GNU-Bash 1.0:general/tcp HTTP-Brute 4.0 :53/tcp VMSA-2015-0001:-VMware-vCenter-Server,-ESXi,-Workstation 7.1 :111/tcp VMSA-2015-0007:-VMware-ESXi-OpenSLP 3.0
  28. 3.3.3.3 general/tcp GNU-Bash-Environment 5.0:80/tcp HTTP-Brute-Force 2.0
復(fù)制代碼

作者: tolilong    時(shí)間: 2016-09-16 13:17
awk '{a="";for(i=2;i<=NF;i++){a=a" "$i};  if(b[$1]) {b[$1]=a";"a} else {b[$1]=a}  }END{for(i in b) print i,b[i]}' filename
作者: y2j16888    時(shí)間: 2016-09-19 11:12
回復(fù) 2# moperyblue


大神能否解釋下這個(gè)腳本的含義?
awk '{k=$1;$1="";a[k]=a[k]?a[k]";"$00}END{for(i in a)print i,a}'

前面的條件看不懂啊 , k=$1; 第1個(gè)字段的文本內(nèi)容賦值給K ? 之后又空格賦值給$1 ?  

a[k]=a[k]?a[k]  ????

作者: moperyblue    時(shí)間: 2016-09-19 11:47
回復(fù) 13# y2j16888


k => 作為臨時(shí)變量保存第一個(gè)域的值.
$1="" => 清空第一個(gè)域的值,如,1.1.1.1 general/tcp GNU-Bash 1.0 這行 執(zhí)行$1=""后,$0的值為" general/tcp GNU-Bash 1.0"
d=a>0?b:c 【三目運(yùn)算符】<=> if(a>0){d=b}else{d=c}
作者: y2j16888    時(shí)間: 2016-09-19 15:06
回復(fù) 14# moperyblue


awk '{k=$1;$1="";a[k]=a[k]?a[k]";"$00}END{for(i in a)print i,a}'

但是就是不懂你寫的這個(gè)運(yùn)算符是啥意思 ?  a[k]=a[k]?a[k]";"$00   ,能否解釋下, 后面的$0;$0 ,是打印全部?

作者: butterflyswim    時(shí)間: 2016-09-19 15:50
回復(fù) 15# y2j16888

a?b:c   如果a成立,就執(zhí)行b,否則執(zhí)行c
a[k]";"$00 第一個(gè)域和$0中間用分號(hào)隔開,否則就執(zhí)行$0

不太會(huì)解釋,自己慢慢體會(huì)

作者: y2j16888    時(shí)間: 2016-09-19 16:08
回復(fù) 16# butterflyswim


那它不是 if a[k]成立,即不為空,則把a(bǔ)[k];$0 賦值給a[k],否則打印$0賦值給a[k]??

那當(dāng)條件中if  a[k] 中這個(gè)的值,初始是怎么樣?怎么樣變化的

作者: moperyblue    時(shí)間: 2016-09-19 16:28
本帖最后由 moperyblue 于 2016-09-19 16:58 編輯

回復(fù) 15# y2j16888


  1. if(a[k]){
  2.   a[k]=a[k]";"$0
  3. }else{
  4.   a[k]=$0
  5. }
復(fù)制代碼


當(dāng)a[k]有值就連接,否則a[k]就被賦值$0(此時(shí)$0已經(jīng)少了第一個(gè)域,因?yàn)榍懊鎴?zhí)行了$1="")
作者: y2j16888    時(shí)間: 2016-09-19 17:01
回復(fù) 18# moperyblue


大神,這個(gè)我已經(jīng)知道,我就是不知道 a[k] 中這個(gè)的值,初始是怎么樣?怎么樣變化的。 能否解釋下,謝謝

作者: moperyblue    時(shí)間: 2016-09-19 17:21
回復(fù) 19# y2j16888


a[k]初始空, 所以會(huì)執(zhí)行 a[k]=$0




歡迎光臨 Chinaunix (http://www.72891.cn/) Powered by Discuz! X3.2