Discussion:
[shell-script] Ajuda Na Formatação de Texto
Vinicius Ruiz viruiz777@yahoo.com.br [shell-script]
2016-10-24 17:18:19 UTC
Permalink
Pessoal Boa Tarde Tudo bem ?
Preciso de uma luz para formatar o texto abaixo usando shell...
P PSTR  10/21/2016 11:02:04 Proc_Customers_Abc   1490                0      XSMG200I
P LSST  10/21/2016 11:02:04 Proc_Customers_Abc   1490  STEP1         0      XSMG201I
P CTRC  10/21/2016 11:02:11 Proc_Customers_Abc   1490  STEP1         0      SCPA000I
P LSST  10/21/2016 11:02:11 Proc_Customers_Abc   1490                0      XSMG201I
P IFED  10/21/2016 11:02:11 Proc_Customers_Abc   1490                0      XSMG409I
P LSST  10/21/2016 11:02:11 Proc_Customers_Abc   1490  STEP2         0      XSMG201I
P RTED  10/21/2016 11:02:11 Proc_Customers_Abc   1490  STEP2         0      SRTA000I
P LSST  10/21/2016 11:02:11 Proc_Customers_Abc   1490  STEP3         0      XSMG201I
P IFED  10/21/2016 11:02:11 Proc_Customers_Abc   1490  STEP3         0      XSMG409I
P LSST  10/21/2016 11:02:11 Proc_Customers_Abc   1490  SUBCONDOK     0      XSMG201I
P RTED  10/21/2016 11:02:11 Proc_Customers_Abc   1490  SUBCONDOK     0      XSMG402I
P LSST  10/21/2016 11:02:11 Proc_Customers_Abc   1490                0      XSMG201I
P PRED  10/21/2016 11:02:11 Proc_Customers_Abc   1490                0      XSMG252I

Eu troquei os espaços por ";"

P;PSTR;;10/21/2016;11:02:04;Proc_Customers_Abc;;;1490;;;;;;;;;;;;;;;;0;;;;;;XSMG200I
P;LSST;;10/21/2016;11:02:04;Proc_Customers_Abc;;;1490;;STEP1;;;;;;;;;0;;;;;;XSMG201I
P;CTRC;;10/21/2016;11:02:11;Proc_Customers_Abc;;;1490;;STEP1;;;;;;;;;0;;;;;;SCPA000I
P;LSST;;10/21/2016;11:02:11;Proc_Customers_Abc;;;1490;;;;;;;;;;;;;;;;0;;;;;;XSMG201I
P;IFED;;10/21/2016;11:02:11;Proc_Customers_Abc;;;1490;;;;;;;;;;;;;;;;0;;;;;;XSMG409I
P;LSST;;10/21/2016;11:02:11;Proc_Customers_Abc;;;1490;;STEP2;;;;;;;;;0;;;;;;XSMG201I
P;RTED;;10/21/2016;11:02:11;Proc_Customers_Abc;;;1490;;STEP2;;;;;;;;;0;;;;;;SRTA000I
P;LSST;;10/21/2016;11:02:11;Proc_Customers_Abc;;;1490;;STEP3;;;;;;;;;0;;;;;;XSMG201I
P;IFED;;10/21/2016;11:02:11;Proc_Customers_Abc;;;1490;;STEP3;;;;;;;;;0;;;;;;XSMG409I
P;LSST;;10/21/2016;11:02:11;Proc_Customers_Abc;;;1490;;SUBCONDOK;;;;;0;;;;;;XSMG201I
P;RTED;;10/21/2016;11:02:11;Proc_Customers_Abc;;;1490;;SUBCONDOK;;;;;0;;;;;;XSMG402I
P;LSST;;10/21/2016;11:02:11;Proc_Customers_Abc;;;1490;;;;;;;;;;;;;;;;0;;;;;;XSMG201I
P;PRED;;10/21/2016;11:02:11;Proc_Customers_Abc;;;1490;;;;;;;;;;;;;;;;0;;;;;;XSMG252I

mas mesmo assim ainda continuo com dificuldade para pegar todos valores "0" que estão praticamente nas penultimas colunas finais deste texto 
todos os "0" antes das palavras XSM* eu precisaria ler para comparar e testar o código de erro. Esse "0" é um código de retorno que eu preciso capturar e comparar. Destaquei em negrito.

Alguém poderia dar uma ajuda ?
Obrigado.
Vinicius
itamarnet@yahoo.com.br [shell-script]
2016-10-24 18:06:48 UTC
Permalink
Prezado Vinícius

Comparar com o que? Código de erro de algum processo que vai efetuar?




Uma maneira de capturar a posição onde os zeros(0) estão seria:
Usando AWK:
1 - sem trocar os espaços por ';'
awk '{print $(NF-1))}' arquivo.txt


2 - com a troca por ';'
awk -F ';' '{print $(NF-6)}' arquivo.txt



Se for mesmo apenas as linhas que tem 'XSM*' ( pois a linhas com SCP e SRT ) precisaria ser:
awk '/XSM/{print $(NF-1))}' arquivo.txt ou awk -F ';' '/XSM/ {print $(NF-6)}' arquivo.txt respectivamente no lugar dos exemplos acima.




E com SED sem trocar os espaços por ';'
sed 's/ *[^[:blank:]]\{1,\}$//;s/.* //' arquivo.txt



E nesse caso não fiz distinção sobre ser linhas com 'XSM' ou não, mas a lógica a ser aplicada é a mesma apresentado no AWK acima.




Isso ajuda?


[]'s
Itamar
itamarnet@yahoo.com.br [shell-script]
2016-10-24 18:09:02 UTC
Permalink
Prezado Vinícius


Comparar com o que? Código de erro de algum processo que vai efetuar?




Uma maneira de capturar a posição onde os zeros(0) estão seria:
Usando AWK:
1 - sem trocar os espaços por ';'
awk '{print $(NF-1))}' arquivo.txt


2 - com a troca por ';'
awk -F ';' '{print $(NF-6)}' arquivo.txt


Se for mesmo apenas as linhas que tem 'XSM*' ( pois a linhas com SCP e SRT ) precisaria ser:
awk '/XSM/{print $(NF-1))}' arquivo.txt ou awk -F ';' '/XSM/ {print $(NF-6)}' arquivo.txt respectivamente no lugar dos exemplos acima.




E com SED sem trocar os espaços por ';'
sed 's/ *[^[:blank:]]\{1,\}$//;s/.* //' arquivo.txt


E nesse caso não fiz distinção sobre ser linhas com 'XSM' ou não, mas a lógica a ser aplicada é a mesma apresentado no AWK acima.




Isso ajuda?


[]'s
Itamar
Vinicius Ruiz viruiz777@yahoo.com.br [shell-script]
2016-10-24 18:38:42 UTC
Permalink
Olá Itamar,
Esses "0" são os códigos de retorno que a aplicacao gera.
Eu vou ler todos eles e comparar pra ver se tem algum que seja diferente de "0". Caso encontre eu saio com uma mensagem de erro.
Sobre os exemplos:
 1 - sem trocar os espaços por ';'      awk '{print $(NF-1))}' arquivo.txtResposta: Esse não funcionou

 2 - com a troca por ';'      awk -F ';' '{print $(NF-6)}' arquivo.txt

Se for mesmo apenas as linhas que tem 'XSM*' ( pois a linhas com SCP e SRT ) precisaria ser:      awk '/XSM/{print $(NF-1))}' arquivo.txt  ou awk -F ';' '/XSM/ {print $(NF-6)}' arquivo.txt respectivamente no lugar dos exemplos acima.Resposta: Funcionou perfeitamente

E com SED sem trocar os espaços por ';'    sed 's/ *[^[:blank:]]\{1,\}$//;s/.* //' arquivo.txt 
Resposta: Este exemplo funcionou perfeitamente. Será que poderia dar uma explicação sobre esse sed ?

Utilizarei esse sed.
Obrigado pela pronta ajuda.
AbraçosVinicius


Em Segunda-feira, 24 de Outubro de 2016 16:09, "***@yahoo.com.br [shell-script]" <shell-***@yahoogrupos.com.br> escreveu:


  Prezado Vinícius
Comparar com o que? Código de erro de algum processo que vai efetuar?

Uma maneira de capturar a posição onde os zeros(0) estão seria:Usando AWK: 1 - sem trocar os espaços por ';'      awk '{print $(NF-1))}' arquivo.txt
 2 - com a troca por ';'      awk -F ';' '{print $(NF-6)}' arquivo.txt
Se for mesmo apenas as linhas que tem 'XSM*' ( pois a linhas com SCP e SRT ) precisaria ser:      awk '/XSM/{print $(NF-1))}' arquivo.txt  ou awk -F ';' '/XSM/ {print $(NF-6)}' arquivo.txt respectivamente no lugar dos exemplos acima.

E com SED sem trocar os espaços por ';'    sed 's/ *[^[:blank:]]\{1,\}$//;s/.* //' arquivo.txt
E nesse caso não fiz distinção sobre ser linhas com 'XSM' ou não, mas a lógica a ser aplicada é a mesma apresentado no AWK acima.

Isso ajuda?
[]'sItamar #yiv8967729260 #yiv8967729260 -- #yiv8967729260ygrp-mkp {border:1px solid #d8d8d8;font-family:Arial;margin:10px 0;padding:0 10px;}#yiv8967729260 #yiv8967729260ygrp-mkp hr {border:1px solid #d8d8d8;}#yiv8967729260 #yiv8967729260ygrp-mkp #yiv8967729260hd {color:#628c2a;font-size:85%;font-weight:700;line-height:122%;margin:10px 0;}#yiv8967729260 #yiv8967729260ygrp-mkp #yiv8967729260ads {margin-bottom:10px;}#yiv8967729260 #yiv8967729260ygrp-mkp .yiv8967729260ad {padding:0 0;}#yiv8967729260 #yiv8967729260ygrp-mkp .yiv8967729260ad p {margin:0;}#yiv8967729260 #yiv8967729260ygrp-mkp .yiv8967729260ad a {color:#0000ff;text-decoration:none;}#yiv8967729260 #yiv8967729260ygrp-sponsor #yiv8967729260ygrp-lc {font-family:Arial;}#yiv8967729260 #yiv8967729260ygrp-sponsor #yiv8967729260ygrp-lc #yiv8967729260hd {margin:10px 0px;font-weight:700;font-size:78%;line-height:122%;}#yiv8967729260 #yiv8967729260ygrp-sponsor #yiv8967729260ygrp-lc .yiv8967729260ad {margin-bottom:10px;padding:0 0;}#yiv8967729260 #yiv8967729260actions {font-family:Verdana;font-size:11px;padding:10px 0;}#yiv8967729260 #yiv8967729260activity {background-color:#e0ecee;float:left;font-family:Verdana;font-size:10px;padding:10px;}#yiv8967729260 #yiv8967729260activity span {font-weight:700;}#yiv8967729260 #yiv8967729260activity span:first-child {text-transform:uppercase;}#yiv8967729260 #yiv8967729260activity span a {color:#5085b6;text-decoration:none;}#yiv8967729260 #yiv8967729260activity span span {color:#ff7900;}#yiv8967729260 #yiv8967729260activity span .yiv8967729260underline {text-decoration:underline;}#yiv8967729260 .yiv8967729260attach {clear:both;display:table;font-family:Arial;font-size:12px;padding:10px 0;width:400px;}#yiv8967729260 .yiv8967729260attach div a {text-decoration:none;}#yiv8967729260 .yiv8967729260attach img {border:none;padding-right:5px;}#yiv8967729260 .yiv8967729260attach label {display:block;margin-bottom:5px;}#yiv8967729260 .yiv8967729260attach label a {text-decoration:none;}#yiv8967729260 blockquote {margin:0 0 0 4px;}#yiv8967729260 .yiv8967729260bold {font-family:Arial;font-size:13px;font-weight:700;}#yiv8967729260 .yiv8967729260bold a {text-decoration:none;}#yiv8967729260 dd.yiv8967729260last p a {font-family:Verdana;font-weight:700;}#yiv8967729260 dd.yiv8967729260last p span {margin-right:10px;font-family:Verdana;font-weight:700;}#yiv8967729260 dd.yiv8967729260last p span.yiv8967729260yshortcuts {margin-right:0;}#yiv8967729260 div.yiv8967729260attach-table div div a {text-decoration:none;}#yiv8967729260 div.yiv8967729260attach-table {width:400px;}#yiv8967729260 div.yiv8967729260file-title a, #yiv8967729260 div.yiv8967729260file-title a:active, #yiv8967729260 div.yiv8967729260file-title a:hover, #yiv8967729260 div.yiv8967729260file-title a:visited {text-decoration:none;}#yiv8967729260 div.yiv8967729260photo-title a, #yiv8967729260 div.yiv8967729260photo-title a:active, #yiv8967729260 div.yiv8967729260photo-title a:hover, #yiv8967729260 div.yiv8967729260photo-title a:visited {text-decoration:none;}#yiv8967729260 div#yiv8967729260ygrp-mlmsg #yiv8967729260ygrp-msg p a span.yiv8967729260yshortcuts {font-family:Verdana;font-size:10px;font-weight:normal;}#yiv8967729260 .yiv8967729260green {color:#628c2a;}#yiv8967729260 .yiv8967729260MsoNormal {margin:0 0 0 0;}#yiv8967729260 o {font-size:0;}#yiv8967729260 #yiv8967729260photos div {float:left;width:72px;}#yiv8967729260 #yiv8967729260photos div div {border:1px solid #666666;height:62px;overflow:hidden;width:62px;}#yiv8967729260 #yiv8967729260photos div label {color:#666666;font-size:10px;overflow:hidden;text-align:center;white-space:nowrap;width:64px;}#yiv8967729260 #yiv8967729260reco-category {font-size:77%;}#yiv8967729260 #yiv8967729260reco-desc {font-size:77%;}#yiv8967729260 .yiv8967729260replbq {margin:4px;}#yiv8967729260 #yiv8967729260ygrp-actbar div a:first-child {margin-right:2px;padding-right:5px;}#yiv8967729260 #yiv8967729260ygrp-mlmsg {font-size:13px;font-family:Arial, helvetica, clean, sans-serif;}#yiv8967729260 #yiv8967729260ygrp-mlmsg table {font-size:inherit;font:100%;}#yiv8967729260 #yiv8967729260ygrp-mlmsg select, #yiv8967729260 input, #yiv8967729260 textarea {font:99% Arial, Helvetica, clean, sans-serif;}#yiv8967729260 #yiv8967729260ygrp-mlmsg pre, #yiv8967729260 code {font:115% monospace;}#yiv8967729260 #yiv8967729260ygrp-mlmsg * {line-height:1.22em;}#yiv8967729260 #yiv8967729260ygrp-mlmsg #yiv8967729260logo {padding-bottom:10px;}#yiv8967729260 #yiv8967729260ygrp-msg p a {font-family:Verdana;}#yiv8967729260 #yiv8967729260ygrp-msg p#yiv8967729260attach-count span {color:#1E66AE;font-weight:700;}#yiv8967729260 #yiv8967729260ygrp-reco #yiv8967729260reco-head {color:#ff7900;font-weight:700;}#yiv8967729260 #yiv8967729260ygrp-reco {margin-bottom:20px;padding:0px;}#yiv8967729260 #yiv8967729260ygrp-sponsor #yiv8967729260ov li a {font-size:130%;text-decoration:none;}#yiv8967729260 #yiv8967729260ygrp-sponsor #yiv8967729260ov li {font-size:77%;list-style-type:square;padding:6px 0;}#yiv8967729260 #yiv8967729260ygrp-sponsor #yiv8967729260ov ul {margin:0;padding:0 0 0 8px;}#yiv8967729260 #yiv8967729260ygrp-text {font-family:Georgia;}#yiv8967729260 #yiv8967729260ygrp-text p {margin:0 0 1em 0;}#yiv8967729260 #yiv8967729260ygrp-text tt {font-size:120%;}#yiv8967729260 #yiv8967729260ygrp-vital ul li:last-child {border-right:none !important;}#yiv8967729260
Vinicius Ruiz viruiz777@yahoo.com.br [shell-script]
2016-10-24 18:50:02 UTC
Permalink
Olá Julio,
Realmente os comandos usando a string XSM funcionam também.
Só que vi que o arquivo pode conter na última coluna outras palavras diferentes de XSM.
 Testando aqui os exmplos que você passaram o que se encaixou melhor foi o sed enviado pelo Itamar que traz todos os "0" gerados independente da string gerada na última coluna do arquivo.
sed 's/ *[^[:blank:]]\{1,\}$//;s/.* //' arquivo.txt
Obrigado pela pronta ajuda.
Abraços.
Vinicius


Em Segunda-feira, 24 de Outubro de 2016 16:41, "Vinicius Ruiz ***@yahoo.com.br [shell-script]" <shell-***@yahoogrupos.com.br> escreveu:


  Olá Itamar,
Esses "0" são os códigos de retorno que a aplicacao gera.
Eu vou ler todos eles e comparar pra ver se tem algum que seja diferente de "0". Caso encontre eu saio com uma mensagem de erro.
Sobre os exemplos:
 1 - sem trocar os espaços por ';'      awk '{print $(NF-1))}' arquivo.txtResposta: Esse não funcionou

 2 - com a troca por ';'      awk -F ';' '{print $(NF-6)}' arquivo.txt

Se for mesmo apenas as linhas que tem 'XSM*' ( pois a linhas com SCP e SRT ) precisaria ser:      awk '/XSM/{print $(NF-1))}' arquivo.txt  ou awk -F ';' '/XSM/ {print $(NF-6)}' arquivo.txt respectivamente no lugar dos exemplos acima.Resposta: Funcionou perfeitamente

E com SED sem trocar os espaços por ';'    sed 's/ *[^[:blank:]]\{1,\}$//;s/.* //' arquivo.txt 
Resposta: Este exemplo funcionou perfeitamente. Será que poderia dar uma explicação sobre esse sed ?

Utilizarei esse sed.
Obrigado pela pronta ajuda.
AbraçosVinicius


Em Segunda-feira, 24 de Outubro de 2016 16:09, "***@yahoo.com.br [shell-script]" <shell-***@yahoogrupos.com.br> escreveu:


  Prezado Vinícius
Comparar com o que? Código de erro de algum processo que vai efetuar?

Uma maneira de capturar a posição onde os zeros(0) estão seria:Usando AWK: 1 - sem trocar os espaços por ';'      awk '{print $(NF-1))}' arquivo.txt
 2 - com a troca por ';'      awk -F ';' '{print $(NF-6)}' arquivo.txt
Se for mesmo apenas as linhas que tem 'XSM*' ( pois a linhas com SCP e SRT ) precisaria ser:      awk '/XSM/{print $(NF-1))}' arquivo.txt  ou awk -F ';' '/XSM/ {print $(NF-6)}' arquivo.txt respectivamente no lugar dos exemplos acima.

E com SED sem trocar os espaços por ';'    sed 's/ *[^[:blank:]]\{1,\}$//;s/.* //' arquivo.txt
E nesse caso não fiz distinção sobre ser linhas com 'XSM' ou não, mas a lógica a ser aplicada é a mesma apresentado no AWK acima.

Isso ajuda?
[]'sItamar

#yiv6394464761 #yiv6394464761 -- #yiv6394464761ygrp-mkp {border:1px solid #d8d8d8;font-family:Arial;margin:10px 0;padding:0 10px;}#yiv6394464761 #yiv6394464761ygrp-mkp hr {border:1px solid #d8d8d8;}#yiv6394464761 #yiv6394464761ygrp-mkp #yiv6394464761hd {color:#628c2a;font-size:85%;font-weight:700;line-height:122%;margin:10px 0;}#yiv6394464761 #yiv6394464761ygrp-mkp #yiv6394464761ads {margin-bottom:10px;}#yiv6394464761 #yiv6394464761ygrp-mkp .yiv6394464761ad {padding:0 0;}#yiv6394464761 #yiv6394464761ygrp-mkp .yiv6394464761ad p {margin:0;}#yiv6394464761 #yiv6394464761ygrp-mkp .yiv6394464761ad a {color:#0000ff;text-decoration:none;}#yiv6394464761 #yiv6394464761ygrp-sponsor #yiv6394464761ygrp-lc {font-family:Arial;}#yiv6394464761 #yiv6394464761ygrp-sponsor #yiv6394464761ygrp-lc #yiv6394464761hd {margin:10px 0px;font-weight:700;font-size:78%;line-height:122%;}#yiv6394464761 #yiv6394464761ygrp-sponsor #yiv6394464761ygrp-lc .yiv6394464761ad {margin-bottom:10px;padding:0 0;}#yiv6394464761 #yiv6394464761actions {font-family:Verdana;font-size:11px;padding:10px 0;}#yiv6394464761 #yiv6394464761activity {background-color:#e0ecee;float:left;font-family:Verdana;font-size:10px;padding:10px;}#yiv6394464761 #yiv6394464761activity span {font-weight:700;}#yiv6394464761 #yiv6394464761activity span:first-child {text-transform:uppercase;}#yiv6394464761 #yiv6394464761activity span a {color:#5085b6;text-decoration:none;}#yiv6394464761 #yiv6394464761activity span span {color:#ff7900;}#yiv6394464761 #yiv6394464761activity span .yiv6394464761underline {text-decoration:underline;}#yiv6394464761 .yiv6394464761attach {clear:both;display:table;font-family:Arial;font-size:12px;padding:10px 0;width:400px;}#yiv6394464761 .yiv6394464761attach div a {text-decoration:none;}#yiv6394464761 .yiv6394464761attach img {border:none;padding-right:5px;}#yiv6394464761 .yiv6394464761attach label {display:block;margin-bottom:5px;}#yiv6394464761 .yiv6394464761attach label a {text-decoration:none;}#yiv6394464761 blockquote {margin:0 0 0 4px;}#yiv6394464761 .yiv6394464761bold {font-family:Arial;font-size:13px;font-weight:700;}#yiv6394464761 .yiv6394464761bold a {text-decoration:none;}#yiv6394464761 dd.yiv6394464761last p a {font-family:Verdana;font-weight:700;}#yiv6394464761 dd.yiv6394464761last p span {margin-right:10px;font-family:Verdana;font-weight:700;}#yiv6394464761 dd.yiv6394464761last p span.yiv6394464761yshortcuts {margin-right:0;}#yiv6394464761 div.yiv6394464761attach-table div div a {text-decoration:none;}#yiv6394464761 div.yiv6394464761attach-table {width:400px;}#yiv6394464761 div.yiv6394464761file-title a, #yiv6394464761 div.yiv6394464761file-title a:active, #yiv6394464761 div.yiv6394464761file-title a:hover, #yiv6394464761 div.yiv6394464761file-title a:visited {text-decoration:none;}#yiv6394464761 div.yiv6394464761photo-title a, #yiv6394464761 div.yiv6394464761photo-title a:active, #yiv6394464761 div.yiv6394464761photo-title a:hover, #yiv6394464761 div.yiv6394464761photo-title a:visited {text-decoration:none;}#yiv6394464761 div#yiv6394464761ygrp-mlmsg #yiv6394464761ygrp-msg p a span.yiv6394464761yshortcuts {font-family:Verdana;font-size:10px;font-weight:normal;}#yiv6394464761 .yiv6394464761green {color:#628c2a;}#yiv6394464761 .yiv6394464761MsoNormal {margin:0 0 0 0;}#yiv6394464761 o {font-size:0;}#yiv6394464761 #yiv6394464761photos div {float:left;width:72px;}#yiv6394464761 #yiv6394464761photos div div {border:1px solid #666666;height:62px;overflow:hidden;width:62px;}#yiv6394464761 #yiv6394464761photos div label {color:#666666;font-size:10px;overflow:hidden;text-align:center;white-space:nowrap;width:64px;}#yiv6394464761 #yiv6394464761reco-category {font-size:77%;}#yiv6394464761 #yiv6394464761reco-desc {font-size:77%;}#yiv6394464761 .yiv6394464761replbq {margin:4px;}#yiv6394464761 #yiv6394464761ygrp-actbar div a:first-child {margin-right:2px;padding-right:5px;}#yiv6394464761 #yiv6394464761ygrp-mlmsg {font-size:13px;font-family:Arial, helvetica, clean, sans-serif;}#yiv6394464761 #yiv6394464761ygrp-mlmsg table {font-size:inherit;font:100%;}#yiv6394464761 #yiv6394464761ygrp-mlmsg select, #yiv6394464761 input, #yiv6394464761 textarea {font:99% Arial, Helvetica, clean, sans-serif;}#yiv6394464761 #yiv6394464761ygrp-mlmsg pre, #yiv6394464761 code {font:115% monospace;}#yiv6394464761 #yiv6394464761ygrp-mlmsg * {line-height:1.22em;}#yiv6394464761 #yiv6394464761ygrp-mlmsg #yiv6394464761logo {padding-bottom:10px;}#yiv6394464761 #yiv6394464761ygrp-msg p a {font-family:Verdana;}#yiv6394464761 #yiv6394464761ygrp-msg p#yiv6394464761attach-count span {color:#1E66AE;font-weight:700;}#yiv6394464761 #yiv6394464761ygrp-reco #yiv6394464761reco-head {color:#ff7900;font-weight:700;}#yiv6394464761 #yiv6394464761ygrp-reco {margin-bottom:20px;padding:0px;}#yiv6394464761 #yiv6394464761ygrp-sponsor #yiv6394464761ov li a {font-size:130%;text-decoration:none;}#yiv6394464761 #yiv6394464761ygrp-sponsor #yiv6394464761ov li {font-size:77%;list-style-type:square;padding:6px 0;}#yiv6394464761 #yiv6394464761ygrp-sponsor #yiv6394464761ov ul {margin:0;padding:0 0 0 8px;}#yiv6394464761 #yiv6394464761ygrp-text {font-family:Georgia;}#yiv6394464761 #yiv6394464761ygrp-text p {margin:0 0 1em 0;}#yiv6394464761 #yiv6394464761ygrp-text tt {font-size:120%;}#yiv6394464761 #yiv6394464761ygrp-vital ul li:last-child {border-right:none !important;}#yiv6394464761
itamarnet@yahoo.com.br [shell-script]
2016-10-24 18:56:08 UTC
Permalink
Calro que sim Vinícius

o Sed:
sed 's/ *[^[:blank:]]\{1,\}$//;s/.* //' arquivo.txt



Vou separar os dois comandos
1 - s/ *[^[:blank:]]\{1,\}$//
Esse comando pega espaços havendo ou não ( *) (espaço e asteriscos), por uma sequencia de caracteres que sejam diferentes de espaços, que ocorram ao menos uma vez e que chegue ao final da linha [^[:blank:]]\{1,\}$, e troca essa sequência por nada '//', ou seja apaga esse trecho.
Isso coloca o campo numérico como o último caractere da linha


2 - s/.* //
Esse comando troca tudo até o último espaço que encontrar por nada, ou seja também apaga esse trecho, assim deixa apenas o número procurado na linha.




Foi claro?


Se houver mais dúvidas, é só perguntar...


[]'s
Itamar
Vinicius Ruiz viruiz777@yahoo.com.br [shell-script]
2016-10-24 19:23:23 UTC
Permalink
Opa Itamar,
Muito obrigado pela ajuda e por esclarecer essa dúvida.
1 Abraço.
Vinicius


Em Segunda-feira, 24 de Outubro de 2016 16:56, "***@yahoo.com.br [shell-script]" <shell-***@yahoogrupos.com.br> escreveu:


  Calro que sim Vinícius
o Sed:sed 's/ *[^[:blank:]]\{1,\}$//;s/.* //' arquivo.txt 

Vou separar os dois comandos1 - s/ *[^[:blank:]]\{1,\}$//  Esse comando pega espaços havendo ou não ( *) (espaço e asteriscos), por uma sequencia de caracteres que sejam diferentes de espaços, que ocorram ao menos uma vez e que chegue ao final da linha [^[:blank:]]\{1,\}$,  e troca essa sequência por nada '//', ou seja apaga esse trecho.Isso coloca o campo numérico como o último caractere da linha
2 - s/.* //  Esse comando troca tudo até o último espaço que encontrar por nada, ou seja também apaga esse trecho, assim deixa apenas o número procurado na linha.

Foi claro?
Se houver mais dúvidas, é só perguntar...
[]'sItamar

#yiv7668767808 #yiv7668767808 -- #yiv7668767808ygrp-mkp {border:1px solid #d8d8d8;font-family:Arial;margin:10px 0;padding:0 10px;}#yiv7668767808 #yiv7668767808ygrp-mkp hr {border:1px solid #d8d8d8;}#yiv7668767808 #yiv7668767808ygrp-mkp #yiv7668767808hd {color:#628c2a;font-size:85%;font-weight:700;line-height:122%;margin:10px 0;}#yiv7668767808 #yiv7668767808ygrp-mkp #yiv7668767808ads {margin-bottom:10px;}#yiv7668767808 #yiv7668767808ygrp-mkp .yiv7668767808ad {padding:0 0;}#yiv7668767808 #yiv7668767808ygrp-mkp .yiv7668767808ad p {margin:0;}#yiv7668767808 #yiv7668767808ygrp-mkp .yiv7668767808ad a {color:#0000ff;text-decoration:none;}#yiv7668767808 #yiv7668767808ygrp-sponsor #yiv7668767808ygrp-lc {font-family:Arial;}#yiv7668767808 #yiv7668767808ygrp-sponsor #yiv7668767808ygrp-lc #yiv7668767808hd {margin:10px 0px;font-weight:700;font-size:78%;line-height:122%;}#yiv7668767808 #yiv7668767808ygrp-sponsor #yiv7668767808ygrp-lc .yiv7668767808ad {margin-bottom:10px;padding:0 0;}#yiv7668767808 #yiv7668767808actions {font-family:Verdana;font-size:11px;padding:10px 0;}#yiv7668767808 #yiv7668767808activity {background-color:#e0ecee;float:left;font-family:Verdana;font-size:10px;padding:10px;}#yiv7668767808 #yiv7668767808activity span {font-weight:700;}#yiv7668767808 #yiv7668767808activity span:first-child {text-transform:uppercase;}#yiv7668767808 #yiv7668767808activity span a {color:#5085b6;text-decoration:none;}#yiv7668767808 #yiv7668767808activity span span {color:#ff7900;}#yiv7668767808 #yiv7668767808activity span .yiv7668767808underline {text-decoration:underline;}#yiv7668767808 .yiv7668767808attach {clear:both;display:table;font-family:Arial;font-size:12px;padding:10px 0;width:400px;}#yiv7668767808 .yiv7668767808attach div a {text-decoration:none;}#yiv7668767808 .yiv7668767808attach img {border:none;padding-right:5px;}#yiv7668767808 .yiv7668767808attach label {display:block;margin-bottom:5px;}#yiv7668767808 .yiv7668767808attach label a {text-decoration:none;}#yiv7668767808 blockquote {margin:0 0 0 4px;}#yiv7668767808 .yiv7668767808bold {font-family:Arial;font-size:13px;font-weight:700;}#yiv7668767808 .yiv7668767808bold a {text-decoration:none;}#yiv7668767808 dd.yiv7668767808last p a {font-family:Verdana;font-weight:700;}#yiv7668767808 dd.yiv7668767808last p span {margin-right:10px;font-family:Verdana;font-weight:700;}#yiv7668767808 dd.yiv7668767808last p span.yiv7668767808yshortcuts {margin-right:0;}#yiv7668767808 div.yiv7668767808attach-table div div a {text-decoration:none;}#yiv7668767808 div.yiv7668767808attach-table {width:400px;}#yiv7668767808 div.yiv7668767808file-title a, #yiv7668767808 div.yiv7668767808file-title a:active, #yiv7668767808 div.yiv7668767808file-title a:hover, #yiv7668767808 div.yiv7668767808file-title a:visited {text-decoration:none;}#yiv7668767808 div.yiv7668767808photo-title a, #yiv7668767808 div.yiv7668767808photo-title a:active, #yiv7668767808 div.yiv7668767808photo-title a:hover, #yiv7668767808 div.yiv7668767808photo-title a:visited {text-decoration:none;}#yiv7668767808 div#yiv7668767808ygrp-mlmsg #yiv7668767808ygrp-msg p a span.yiv7668767808yshortcuts {font-family:Verdana;font-size:10px;font-weight:normal;}#yiv7668767808 .yiv7668767808green {color:#628c2a;}#yiv7668767808 .yiv7668767808MsoNormal {margin:0 0 0 0;}#yiv7668767808 o {font-size:0;}#yiv7668767808 #yiv7668767808photos div {float:left;width:72px;}#yiv7668767808 #yiv7668767808photos div div {border:1px solid #666666;height:62px;overflow:hidden;width:62px;}#yiv7668767808 #yiv7668767808photos div label {color:#666666;font-size:10px;overflow:hidden;text-align:center;white-space:nowrap;width:64px;}#yiv7668767808 #yiv7668767808reco-category {font-size:77%;}#yiv7668767808 #yiv7668767808reco-desc {font-size:77%;}#yiv7668767808 .yiv7668767808replbq {margin:4px;}#yiv7668767808 #yiv7668767808ygrp-actbar div a:first-child {margin-right:2px;padding-right:5px;}#yiv7668767808 #yiv7668767808ygrp-mlmsg {font-size:13px;font-family:Arial, helvetica, clean, sans-serif;}#yiv7668767808 #yiv7668767808ygrp-mlmsg table {font-size:inherit;font:100%;}#yiv7668767808 #yiv7668767808ygrp-mlmsg select, #yiv7668767808 input, #yiv7668767808 textarea {font:99% Arial, Helvetica, clean, sans-serif;}#yiv7668767808 #yiv7668767808ygrp-mlmsg pre, #yiv7668767808 code {font:115% monospace;}#yiv7668767808 #yiv7668767808ygrp-mlmsg * {line-height:1.22em;}#yiv7668767808 #yiv7668767808ygrp-mlmsg #yiv7668767808logo {padding-bottom:10px;}#yiv7668767808 #yiv7668767808ygrp-msg p a {font-family:Verdana;}#yiv7668767808 #yiv7668767808ygrp-msg p#yiv7668767808attach-count span {color:#1E66AE;font-weight:700;}#yiv7668767808 #yiv7668767808ygrp-reco #yiv7668767808reco-head {color:#ff7900;font-weight:700;}#yiv7668767808 #yiv7668767808ygrp-reco {margin-bottom:20px;padding:0px;}#yiv7668767808 #yiv7668767808ygrp-sponsor #yiv7668767808ov li a {font-size:130%;text-decoration:none;}#yiv7668767808 #yiv7668767808ygrp-sponsor #yiv7668767808ov li {font-size:77%;list-style-type:square;padding:6px 0;}#yiv7668767808 #yiv7668767808ygrp-sponsor #yiv7668767808ov ul {margin:0;padding:0 0 0 8px;}#yiv7668767808 #yiv7668767808ygrp-text {font-family:Georgia;}#yiv7668767808 #yiv7668767808ygrp-text p {margin:0 0 1em 0;}#yiv7668767808 #yiv7668767808ygrp-text tt {font-size:120%;}#yiv7668767808 #yiv7668767808ygrp-vital ul li:last-child {border-right:none !important;}#yiv7668767808
'Julio C. Neves' julio.neves@gmail.com [shell-script]
2016-10-24 18:38:48 UTC
Permalink
Fala Vinicius,
tem um monte de formas de fazer isso e inclusive o Itamar já deu algumas
excelentes dicas. Mas uma outra forma de fazer isso, e estou dando esse
pitaco, somente porque os campos são tabulados e, para piorar, faltam
alguns STEP, seria contar a posição dos campos que vc deseja e usar um
grep+cut ou um sed.

grep -F XSM arquivo | cut -c POSICAO

ou

sed -r '/XSM/!d; s/.{POSICAO-1}(.).*/\1/' arquivo

se o 0 estiver na posição 60, ficaria:

grep -F XSM arquivo | cut -c 60

ou

sed -r '/XSM/!d; s/.{59}(.).*/\1/' arquivo


Abcs,
Julio
*@juliobash*

*Próximos cursos de Shell*
*Cidade Local Período*
*​*
*São Paulo 4Linux
<https://www.4linux.com.br/curso/programacao-em-shell-script> 05-09/12*
Dou treinamento de *Shell* em qualquer cidade.
Post by Vinicius Ruiz ***@yahoo.com.br [shell-script]
Pessoal Boa Tarde Tudo bem ?
Preciso de uma luz para formatar o texto abaixo usando shell...
P PSTR 10/21/2016 11:02:04 Proc_Customers_Abc 1490 *0*
XSMG200I
P LSST 10/21/2016 11:02:04 Proc_Customers_Abc 1490 STEP1 *0*
XSMG201I
P CTRC 10/21/2016 11:02:11 Proc_Customers_Abc 1490 STEP1 *0*
SCPA000I
P LSST 10/21/2016 11:02:11 Proc_Customers_Abc 1490 *0*
XSMG201I
P IFED 10/21/2016 11:02:11 Proc_Customers_Abc 1490 *0*
XSMG409I
P LSST 10/21/2016 11:02:11 Proc_Customers_Abc 1490 STEP2 *0*
XSMG201I
P RTED 10/21/2016 11:02:11 Proc_Customers_Abc 1490 STEP2 *0*
SRTA000I
P LSST 10/21/2016 11:02:11 Proc_Customers_Abc 1490 STEP3 *0*
XSMG201I
P IFED 10/21/2016 11:02:11 Proc_Customers_Abc 1490 STEP3 *0*
XSMG409I
P LSST 10/21/2016 11:02:11 Proc_Customers_Abc 1490 SUBCONDOK *0*
XSMG201I
P RTED 10/21/2016 11:02:11 Proc_Customers_Abc 1490 SUBCONDOK *0*
XSMG402I
P LSST 10/21/2016 11:02:11 Proc_Customers_Abc 1490 *0*
XSMG201I
P PRED 10/21/2016 11:02:11 Proc_Customers_Abc 1490 *0*
XSMG252I
Eu troquei os espaços por ";"
P;PSTR;;10/21/2016;11:02:04;Proc_Customers_Abc;;;1490;;;;;;;;;;;;;;;;*0*
;;;;;;XSMG200I
P;LSST;;10/21/2016;11:02:04;Proc_Customers_Abc;;;1490;;STEP1;;;;;;;;;*0*
;;;;;;XSMG201I
P;CTRC;;10/21/2016;11:02:11;Proc_Customers_Abc;;;1490;;STEP1;;;;;;;;;*0*
;;;;;;SCPA000I
P;LSST;;10/21/2016;11:02:11;Proc_Customers_Abc;;;1490;;;;;;;;;;;;;;;;*0*
;;;;;;XSMG201I
P;IFED;;10/21/2016;11:02:11;Proc_Customers_Abc;;;1490;;;;;;;;;;;;;;;;*0*
;;;;;;XSMG409I
P;LSST;;10/21/2016;11:02:11;Proc_Customers_Abc;;;1490;;STEP2;;;;;;;;;*0*
;;;;;;XSMG201I
P;RTED;;10/21/2016;11:02:11;Proc_Customers_Abc;;;1490;;STEP2;;;;;;;;;*0*
;;;;;;SRTA000I
P;LSST;;10/21/2016;11:02:11;Proc_Customers_Abc;;;1490;;STEP3;;;;;;;;;*0*
;;;;;;XSMG201I
P;IFED;;10/21/2016;11:02:11;Proc_Customers_Abc;;;1490;;STEP3;;;;;;;;;*0*
;;;;;;XSMG409I
P;LSST;;10/21/2016;11:02:11;Proc_Customers_Abc;;;1490;;SUBCONDOK;;;;;*0*
;;;;;;XSMG201I
P;RTED;;10/21/2016;11:02:11;Proc_Customers_Abc;;;1490;;SUBCONDOK;;;;;*0*
;;;;;;XSMG402I
P;LSST;;10/21/2016;11:02:11;Proc_Customers_Abc;;;1490;;;;;;;;;;;;;;;;*0*
;;;;;;XSMG201I
P;PRED;;10/21/2016;11:02:11;Proc_Customers_Abc;;;1490;;;;;;;;;;;;;;;;*0*
;;;;;;XSMG252I
mas mesmo assim ainda continuo com dificuldade para pegar todos valores
"0" que estão praticamente nas penultimas colunas finais deste texto
todos os "0" antes das palavras XSM* eu precisaria ler para comparar e
testar o código de erro. Esse "0" é um código de retorno que eu preciso
capturar e comparar. Destaquei em negrito.
Alguém poderia dar uma ajuda ?
Obrigado.
Vinicius
Loading...