Re: manipulate column

Davide Brini <[email protected]>
Newsgroups gmane.editors.sed.user
Message-ID <[email protected]>
On Fri, 27 Sep 2013 10:35:40 +0200, "MOKRANI Rachid"
<[email protected]> wrote:

> Hi,
> 
>  
> 
> I have two files. (with more than 5000 lines)
> 
>  
> 
> The first file A.txt, 
> 
>  
> 
> Name_1; Firstname_1; address_A; phone_number;
> 
> Name_2; Firstname_2; address_B; phone_number;
> 
> Name_30; Firstname_3; address_C; phone_number;
> 
> Name_45; Firstname_4; address_D; phone_number;
> 
> Name_50; Firstname_5; address_E; phone_number;
> 
> Name_60; Firstname_5; address_E; phone_number;
> 
>  
> 
>  
> 
> The second file B.txt
> 
>  
> 
> 0001;Name_1; Firstname_1; address_A; phone_number;
> 
> 0002;Name_2; Firstname_2; address_B; phone_number;
> 
> 0003; Name_3;Firstname_3; address_C; phone_number;
> 
> 1111;Name_4; Firstname_4; address_D; phone_number;
> 
> 5555;Name_5; Firstname_5; address_E; phone_number;
> 
> 4567;Name_6; Firstname_6; address_F; phone_number;
> 
> 1256;Name_7; Firstname_7; address_G; phone_number;
> 
> 4953;Name_8; Firstname_8; address_H; phone_number;
> 
> 7896;Name_60; Firstname_5; address_I; phone_number;
> 
> 7897;Name_61; Firstname_61; address_J; phone_number;
> 
>  
> 
>  
> 
>  
> 
> I would like to have : 
> 
>  
> 
> 0001;Name_1; Firstname_1; address_A; phone_number;
> 
> 0002;Name_2; Firstname_2; address_B; phone_number;
> 
> XXXX;Name_30; Firstname_3; address_C; phone_number;
> 
> XXXX;Name_45; Firstname_4; address_D; phone_number;
> 
> XXXX;Name_50; Firstname_5; address_E; phone_number;
> 
> 7896;Name_60; Firstname_5; address_E; phone_number;

This is trivial with awk:

awk -F ';' '

NR==FNR { a[$2] = $1; next }
{ print ( ($1 in a) ? a[$1] : "XXXX" ) ";" $0 }

' fileB.txt fileA.txt

Not so much with sed, but if you insist on using it, you can do

sed 's|\([^;]*\);\([^;]*\);.*|s/^\2;/\1;\2;/;t|
$a\
s/^/XXXX;/' fileB.txt | sed -f- fileA.txt

-- 
D.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.