acdc
February 23, 2012, 5:47am
1
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
acdc
February 23, 2012, 6:05am
3
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
acdc
February 23, 2012, 6:21am
6
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