Como substituir o valor de uma determinada condição em uma coluna específica de arquivo

2

Eu tenho o arquivo separado por pipe | e quero que, quando a coluna 6 contiver a letra I print 0758000 na coluna 7 e quando a coluna 6 contém a letra A print 0800000 na coluna 7, não consigo encontrar como fazer isso !!!

Exemplo:

Arquivo original

cat file1.txt
Z89|EEE333333|100001|JANMC84|19990101|I|1800040
Z89|EEE444444|200001|JANMC84|19990101|I|1800040
Z89|EEE222222|300001|JANMC84|19990101|A|1800040
Z89|EEE555555|700001|JANMC84|19990101|A|1800040

O resultado deve ser:

Z89|EEE333333|100001|JANMC84|19990101|I|0758000
Z89|EEE444444|200001|JANMC84|19990101|I|0758000
Z89|EEE222222|300001|JANMC84|19990101|A|0800000
Z89|EEE555555|700001|JANMC84|19990101|A|0800000
    
por Miguel Angel 28.07.2015 / 20:38

3 respostas

1

Você pode fazer isso com o awk como

awk -F\| 'BEGIN {OFS=FS} $6 == "A" {$7 = "0800000"} $6 == "I" {$7 = "0758000"}; 1' file1.txt

Isso terá awk campos divididos com base em | e, em seguida, definirá o separador do campo de saída como | quando gravarmos as linhas novamente. Então, se o sexto campo, $6 , for A , substitua o sétimo campo por um valor específico e um valor diferente, se for I. Em seguida, imprima a linha no final, com nossas alterações, se fizermos alguma. / p>     

por 28.07.2015 / 20:58
0

com sed :

sed -e 's/\(I|\)[^|]*$/758000/;s/\(A|\)[^|]*$/800000/' file1.txt

O objetivo é s ubstitutar tudo o que vem depois de I| ou A| (ou seja, a última coluna) com os números desejados.

Resultado:

Z89|EEE333333|100001|JANMC84|19990101|I|0758000
Z89|EEE444444|200001|JANMC84|19990101|I|0758000
Z89|EEE222222|300001|JANMC84|19990101|A|0800000
Z89|EEE555555|700001|JANMC84|19990101|A|0800000
    
por 28.07.2015 / 21:07
0
SLPJP_Box                                                        11/03/2017 22:00:07  -----                RU 13232789/1
 SLPJP_PRD_SOB_MAIN                                              09/07/2017 22:00:30  09/07/2017 22:00:57  OI 11769239/1 0
 SLPJP_PRD_SOD_BOX                                               11/03/2017 22:00:18  -----                RU 13232789/1
  SLPJP_PRD_SOD_001                                              11/03/2017 22:00:34  11/03/2017 23:10:25  SU 13232789/1 0
  SLPJP_PRD_SOD_002                                              11/03/2017 23:10:26  -----                RU 13232789/1
  SLPJP_PRD_SOD_003                                              -----                11/02/2017 22:18:34  AC 13232789/0
  SLPJP_PRD_SOD_004                                              -----                11/02/2017 22:19:55  AC 13232789/0

Eu quero imprimir todas as colunas, mas remover todas as colunas SU, OI, AC e remover todas as partes em branco de qualquer separador

    
por 05.11.2017 / 12:03