AWK ... Delimitador tabulação [RESOLVIDO]

1. AWK ... Delimitador tabulação [RESOLVIDO]

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 20/11/2018 - 23:12h

Pessoas ... tenho 3 colunas separadas por tab ... como retorno elas no awk ???

O que mais chegou perto foi esse
awk 'BEGIN{OFS="\t"} 
só que ele julgou espaços como tab.



  


2. MELHOR RESPOSTA

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 20/11/2018 - 23:30h

Mauriciodez escreveu:

Pessoas ... tenho 3 colunas separadas por tab ... como retorno elas no awk ???

O que mais chegou perto foi esse
awk 'BEGIN{OFS="\t"} 
só que ele julgou espaços como tab.


Mauricio, boa noite.
OFS, é o separador de saida, o de entrada é o IFS, ou F.
OFS=Output Field Separator
IFS=Input Field Separetor

echo -e "000\t111\t222"|awk -F"\t" '{print NR,NF}'
1 3
echo -e "000\t111\t222"|awk 'BEGIN{IFS="\t"}{print NR,NF}' 

1 3
Marcelo Oliver

3. Re: AWK ... Delimitador tabulação [RESOLVIDO]

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 20/11/2018 - 23:44h

msoliver escreveu:
echo -e "000\t111\t222"|awk -F"\t" '{print NR,NF}' 



Bitcho ... testei 672 variações e faltou justamente o mais óbvio, deve ter entrado na mente que tinha testado isso quando na verdade caiu foi no esquecimento.

Abçs

outra coisa ... se forem N tab's variados entre colunas ... troco primeiro para 1 só tab ou tem como fazer para o awk ignorar a quantidade ???

------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------



4. Re: AWK ... Delimitador tabulação [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 20/11/2018 - 23:54h

Mauriciodez escreveu:

msoliver escreveu:
echo -e "000\t111\t222"|awk -F"\t" '{print NR,NF}' 



Bitcho ... testei 672 variações e faltou justamente o mais óbvio, deve ter entrado na mente que tinha testado isso quando na verdade caiu foi no esquecimento.

Abçs

outra coisa ... se forem N tab's variados entre colunas ... troco primeiro para 1 só tab ou tem como fazer para o awk ignorar a quantidade ???

------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------

outra coisa ... se forem N tab's variados entre colunas ... troco primeiro para 1 só tab ou tem como fazer para o awk ignorar a quantidade ???

Nesse caso pode usar assim:
echo -e "XXX\t000\t\t111\t\t\t222"|awk -F'[\t]+' '{print NR,NF,$1,$2,$3,$4}'
1 4 XXX 000 111 222
O separador F é uma REGEX.

Abç.:
Marcelo



5. Re: AWK ... Delimitador tabulação [RESOLVIDO]

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 21/11/2018 - 00:09h

No comando sozinho o trem funcionou , no script não ... o que tem de errado ???

mauricio@phantom ~ $ cat txt
000 111 222
000 111 222
000 111 222
000 111 222
000 111 222
mauricio@phantom ~ $ awk -F'[\t]+' '{print $1}' txt
000
000
000
000
000
mauricio@phantom ~ $ cat sh.sh
#!/bin/bash
while read LIN
do
X1=`echo $LIN | awk -F'[\t]+' '{print $1}'`
echo $X1
done < txt
mauricio@ph./sh.sh
000 111 222
000 111 222
000 111 222
000 111 222
mauricio@phantom ~ $


a intenção é pegar 1 coluna de cada linha por vez !!!

------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------



6. Re: AWK ... Delimitador tabulação [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 08/12/2018 - 19:17h

Mauriciodez escreveu:

No comando sozinho o trem funcionou , no script não ... o que tem de errado ???

mauricio@phantom ~ $ cat txt
000 111 222
000 111 222
000 111 222
000 111 222
000 111 222
mauricio@phantom ~ $ awk -F'[\t]+' '{print $1}' txt
000
000
000
000
000
mauricio@phantom ~ $ cat sh.sh
#!/bin/bash
while read LIN
do
X1=`echo $LIN | awk -F'[\t]+' '{print $1}'`
echo $X1
done < txt
mauricio@ph./sh.sh
000 111 222
000 111 222
000 111 222
000 111 222
mauricio@phantom ~ $


a intenção é pegar 1 coluna de cada linha por vez !!!

------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------


Mauricio, veja se isso que pretende obter:
cat texto.txt

Linha_001 1_2222 1_3333
Linha_002 2_2222 2_3333
Linha_003 3_2222 3_3333
Linha_004 4_2222 4_3333
Linha_005 5_2222 5_3333


#!/bin/bash
n=0;
NF=$(awk -F'[\t]+' 'END {print NF}' texto.txt)
while (($n<$NF));do
let n++;
echo -e "\n Campo $n\n"
awk -F'[\t]+' '{print " Campo:",'$n',$'$n';}' texto.txt
echo;echo -e $_{1..40}'\b-';
done


marcelo oliver







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts