Problem with printing the strings

hello all,

I am novice to shell scripting and need your help guys.I have a file called myfile.txt and its contents are shown below :

<project name="device/samsung/crespo" revision="c932ac3b9f8a53a5c433dc7d3cfa2fb5d45a7eb9"/>
  <project name="device/samsung/crespo4g" revision="045aa104f257fdf0946d28e2dcaab549d3bbeaa9"/>
  <project name="device/samsung/maguro" revision="185f51cd2d009e45ae7aa7d8c5ee2de0bda90d33"/>
  <project name="platform/packages/wallpapers/MusicVisualization" path="packages/wallpapers/MusicVisualization" revision="576359ce60d2e0ef8205737570c647c29e3fe922"/>
  <project name="platform/packages/wallpapers/NoiseField" path="packages/wallpapers/NoiseField" revision="4154cea31097a003bdceb9e50f4d69e3ec50e223"/>
  <project name="platform/packages/wallpapers/PhaseBeam" path="packages/wallpapers/PhaseBeam" revision="5cc9b223bc9aa7c45bbb995ab1648286f8d04bbe"/>

Now I want the expected out in different file.You can name this file as output.txt
Output should look like this :

project device/samsung/crespo c932ac3b9f8a53a5c433dc7d3cfa2fb5d45a7eb9
project device/samsung/crespo4g 045aa104f257fdf0946d28e2dcaab549d3bbeaa9
project device/samsung/maguro
185f51cd2d009e45ae7aa7d8c5ee2de0bda90d33
project packages/wallpapers/MusicVisualization 576359ce60d2e0ef8205737570c647c29e3fe922
project packages/wallpapers/NoiseField 4154cea31097a003bdceb9e50f4d69e3ec50e223
project packages/wallpapers/PhaseBeam 5cc9b223bc9aa7c45bbb995ab1648286f8d04bbe

So far I could do only this :

awk -F'"' '{print $4"\n" $6"\n"}' myfile.txt >output.txt

But I am not getting the output which is shown above.Let me know how can I do this using a shell script.Should I use if then else or while or should I use grep or find.Let me know.I am messed up with this.

Thank you.

A small change to what you did:

awk -F'"' '{print $2, $4, $6}'  myfile.txt

Guru.

1 Like

But the output I am getting is this :

device/samsung/crespo c932ac3b9f8a53a5c433dc7d3cfa2fb5d45a7eb9 
device/samsung/crespo4g 045aa104f257fdf0946d28e2dcaab549d3bbeaa9 
device/samsung/maguro 185f51cd2d009e45ae7aa7d8c5ee2de0bda90d33 
platform/packages/wallpapers/MusicVisualization packages/wallpapers/MusicVisualization 576359ce60d2e0ef8205737570c647c29e3fe922
platform/packages/wallpapers/NoiseField packages/wallpapers/NoiseField 4154cea31097a003bdceb9e50f4d69e3ec50e223
platform/packages/wallpapers/PhaseBeam packages/wallpapers/PhaseBeam 5cc9b223bc9aa7c45bbb995ab1648286f8d04bbe

This is not the expected output. I have already shown the expected output above.
I am expecting this :

project device/samsung/crespo c932ac3b9f8a53a5c433dc7d3cfa2fb5d45a7eb9
project device/samsung/crespo4g 045aa104f257fdf0946d28e2dcaab549d3bbeaa9
project device/samsung/maguro
185f51cd2d009e45ae7aa7d8c5ee2de0bda90d33
project packages/wallpapers/MusicVisualization 576359ce60d2e0ef8205737570c647c29e3fe922
project packages/wallpapers/NoiseField 4154cea31097a003bdceb9e50f4d69e3ec50e223
project packages/wallpapers/PhaseBeam 5cc9b223bc9aa7c45bbb995ab1648286f8d04bbe
awk -F'"' '{print $2, $6?$6:$4}'  myfile.txt

Guru.

1 Like

And lil bit more change:

awk -F'"' '{print "project " $2, $6?$6:$4}'  myfile.txt
1 Like

Thanks a lot.But last 3 lines the output is coming like

project platform/packages/wallpapers/MusicVisualization 576359ce60d2e0ef8205737570c647c29e3fe922
project platform/packages/wallpapers/NoiseField 4154cea31097a003bdceb9e50f4d69e3ec50e223
project platform/packages/wallpapers/PhaseBeam 5cc9b223bc9aa7c45bbb995ab1648286f8d04bbe

Now I need to remove the platform from these 3 lines.

project packages/wallpapers/MusicVisualization 576359ce60d2e0ef8205737570c647c29e3fe922
project packages/wallpapers/NoiseField 4154cea31097a003bdceb9e50f4d69e3ec50e223
project packages/wallpapers/PhaseBeam 5cc9b223bc9aa7c45bbb995ab1648286f8d04bbe

Anyways I will give a try. Thanks for all those who helped me.

awk -F'[="]*' '/name/{sub(/platform\//,x);printf "project %s ",$2}/revision/{print $2}' RS=" " infile
1 Like

Through Sed..

sed '/device/s/^ *<\([^ ]*\) [^"]*"\([^"]*\)" [^"]*"\([^"]*\)".*/\1 \2 \3/;/platform/s/^ *<\([^ ]*\) [^/]*\/\([^"]*\)" [^ ]* [^"]*"\([^"]*\)".*/\1 \2 \3/' inputfile