|
From: | Eliphas Levy Theodoro |
Subject: | Re: [shell-script] alguém pode me ajudar a resolver? |
Date: | Fri, 13 May 2005 15:40:08 -0300 (BRT) |
Em awk acho que resolve com algo assim: BEGIN{ FS=OFS=";" } { if($4) sub("@",";",$4); else $4=";"; print } One-liner: $ awk 'BEGIN{FS=OFS=";"}{if($4)sub("@",";",$4);else $4=";";print}' arq 2005-05-02;04:45:21;88B6629FBF;ezihwqmsh;yahoo.com;13147;1 2005-05-02;04:45:26;AA2F926FC1;;;7012;1 Ou, em shell... $ cat xucrute.sh #!/bin/bash IFS=";" while read a b c d e f; do if [ "$d" ]; then d=${d/@/;} else d=";" fi echo "$a;$b;$c;$d;$e;$f" done $ ./xucrute.sh < arq 2005-05-02;04:45:21;88B6629FBF;ezihwqmsh;yahoo.com;13147;1 2005-05-02;04:45:26;AA2F926FC1;;;7012;1 [ ]'s -- Eliphas SuSE List, @ 13:17:
Tenho estas duas linhas: 2005-05-02;04:45:21;88B6629FBF;address@hidden;13147;1 2005-05-02;04:45:26;AA2F926FC1;;7012;1 eu dou o comando: # echo "2005-05-02;04:45:21;88B6629FBF;address@hidden;13147;1" | awk -F "@" '{ print $1";"$2 }' 2005-05-02;04:45:21;88B6629FBF;ezihwqmsh;yahoo.com;13147;1 so que, a segunda linha, nao tem o @, logo tem como tratar a segunda linha na sequancia, com um awk alinhado pra ter isso como saida (um ";" a mais entre o ID e o email que nao existe na segunda linha), processando as duas linhas na sequancia: 2005-05-02;04:45:21;88B6629FBF;ezihwqmsh;yahoo.com;13147;1 2005-05-02;04:45:26;AA2F926FC1;;;7012;1
[Prev in Thread] | Current Thread | [Next in Thread] |