Encontre a posição do caractere repetido “&”

0

Como pode determinar a posição de "&" na coluna número 5 para substring o valor 2 ou o valor de substring 3 por funções awk

column1|column2|column3|column4|variable1:value1 & variable2:value2 & variable3:value3 & variable4:value4|column6|column7|
    
por moh 13.10.2015 / 09:36

2 respostas

1

tente u.awk como

 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] ;
   }
 }

dado entrada como

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

chamado com 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]
  • observe que a quinta coluna vazia é tratada em for( .. ) (como n é 0)
  • observe também que o espaço em branco não é tratado.
  • Atualizado para fornecer a posição de &
por 13.10.2015 / 11:01
0

Usando o AWK:

awk -F['&''|'] '{ split($6,a,":");print a[2] }' input_file

    
por 13.10.2015 / 10:11