Skip to main content
added 237 characters in body
Source Link
Archemar
  • 32.3k
  • 18
  • 75
  • 107

try u.awk as

 BEGIN { FS="|" ; } { n=split($5,A,"&") ; for ( i=1; i <= n ; i++ ) { printf "%d-th & at position %d\n",i,length(A[i])+i ; split(A[i],B,":") i; printf "\t%s"\t[%s] : %s\n"[%s]\n",B[1],B[2] ; } } 

given input as

column1|column2|column3|column4|variable1:value1 & variable2:value2 & variable3:value3 & variable4:value4|column6|column7| COLn1|COLn2|COLn3|COLn4||COLn6|COLn7| Tue Oct 13 10:56:50 CEST 2015 

called with awk -f u.awk u

1-th & at position variable118  [variable1] : value1[value1 ] 2-th & at position 20 [ variable2variable2] : value2[value2 ] 3-th & at position 21  variable3 [ variable3] : value3[value3 ] 4-th & at position 21  variable4  [ variable4] : value4[value4] 
  • note that empty 5th colum is treated in for( .. ) (as n is 0)
  • note also that white space are not treated.
  • Updated to give &'s position

try u.awk as

 BEGIN { FS="|" ; } { n=split($5,A,"&") ; for ( i=1; i <= n ; i++ ) { split(A[i],B,":") i; printf "\t%s : %s\n",B[1],B[2] ; } } 

given input as

column1|column2|column3|column4|variable1:value1 & variable2:value2 & variable3:value3 & variable4:value4|column6|column7| COLn1|COLn2|COLn3|COLn4||COLn6|COLn7| Tue Oct 13 10:56:50 CEST 2015 

called with awk -f u.awk u

 variable1 : value1 variable2 : value2 variable3 : value3 variable4 : value4 
  • note that empty 5th colum is treated in for( .. ) (as n is 0)
  • note also that white space are not treated.

try u.awk as

 BEGIN { FS="|" ; } { n=split($5,A,"&") ; for ( i=1; i <= n ; i++ ) { printf "%d-th & at position %d\n",i,length(A[i])+i ; split(A[i],B,":") i; printf "\t[%s] : [%s]\n",B[1],B[2] ; } } 

given input as

column1|column2|column3|column4|variable1:value1 & variable2:value2 & variable3:value3 & variable4:value4|column6|column7| COLn1|COLn2|COLn3|COLn4||COLn6|COLn7| Tue Oct 13 10:56:50 CEST 2015 

called with awk -f u.awk u

1-th & at position 18  [variable1] : [value1 ] 2-th & at position 20 [ variable2] : [value2 ] 3-th & at position 21   [ variable3] : [value3 ] 4-th & at position 21    [ variable4] : [value4] 
  • note that empty 5th colum is treated in for( .. ) (as n is 0)
  • note also that white space are not treated.
  • Updated to give &'s position
Source Link
Archemar
  • 32.3k
  • 18
  • 75
  • 107

try u.awk as

 BEGIN { FS="|" ; } { n=split($5,A,"&") ; for ( i=1; i <= n ; i++ ) { split(A[i],B,":") i; printf "\t%s : %s\n",B[1],B[2] ; } } 

given input as

column1|column2|column3|column4|variable1:value1 & variable2:value2 & variable3:value3 & variable4:value4|column6|column7| COLn1|COLn2|COLn3|COLn4||COLn6|COLn7| Tue Oct 13 10:56:50 CEST 2015 

called with awk -f u.awk u

 variable1 : value1 variable2 : value2 variable3 : value3 variable4 : value4 
  • note that empty 5th colum is treated in for( .. ) (as n is 0)
  • note also that white space are not treated.