Required help to print diff columns for 2 patterns using awk

Hi All,
I need help for below scenario :

I have a principals.xml_24092012backup file :

cat principals.xml_24092012backup
 
   </user>
      <user username="eramire" password="2D393C01720749256303D204826A374D9AE9ABABBF8A">
         <roleMapping rolename="VIEW_EVERYTHING"/>
      </user>
      <user username="dgarza" password="74E07848E16A8D7E8CCFD9C7A55C49F7C6A12EDED5B0">
         <roleMapping rolename="VIEW_EVERYTHING"/>
         <roleMapping rolename="Ebis Read Only"/>
      </user>
      <user username="ecortes" password="11CCE44B88E035556821323F2853AEBFEB6A3DE88088">
         <roleMapping rolename="VIEW_EVERYTHING"/>
      </user>

Below output is getting when I run ->

cat principals.xml_24092012backup | grep -i -e username -e rolename | awk '{ print " " $2 " " $3 " " $4}' 
  
 username="eramire" password="2D393C01720749256303D204826A374D9AE9ABABBF8A">
 rolename="VIEW_EVERYTHING"/>
 username="dgarza" password="74E07848E16A8D7E8CCFD9C7A55C49F7C6A12EDED5B0">
 rolename="VIEW_EVERYTHING"/>
 rolename="Ebis Read Only"/>
 username="ecortes" password="11CCE44B88E035556821323F2853AEBFEB6A3DE88088">
 rolename="VIEW_EVERYTHING"/>

But I want to print column 2 ($2) for "username" pattern and column 2,3,4 for "rolename" pattern.
So Expected Output would be :

 username="eramire" 
 rolename="VIEW_EVERYTHING"/>
 username="dgarza" 
 rolename="VIEW_EVERYTHING"/>
 rolename="Ebis Read Only"/>
 username="ecortes" 
 rolename="VIEW_EVERYTHING"/>

Could you please help me out to get above output.
Thanks in advance!

Regards,
Kiran

Try

awk '/username/ {print $2} /rolename/ {print $2 $3 $4}' infile
username="eramire"
rolename="VIEW_EVERYTHING"/>
username="dgarza"
rolename="VIEW_EVERYTHING"/>
rolename="EbisReadOnly"/>
username="ecortes"
rolename="VIEW_EVERYTHING"/>
1 Like

Hi Rudi,

Thanks for the update.
command is giving expected output.

Regards,
Kiran