Fetching the string using different patterns

HI,

Please help me with the following problem:
I have an xml file with the following lines

<NameValuePair>
            <name>SharedResources/JDBC/Admin/password</name>
            <value>rjmadmin</value>
        </NameValuePair>
        <NameValuePair>
            <name>SharedResources/JDBC/Admin/userName</name>
            <value>rjmadmin</value>
        </NameValuePair>
        <NameValuePair>
            <name>SharedResources/JDBC/Batch/Password</name>
            <value>rjmbatch</value>
        </NameValuePair>
        <NameValuePair>
            <name>SharedResources/JDBC/Batch/UserName</name>
            <value>rjmbatch</value>
        </NameValuePair>
        <NameValuePair>
            <name>SharedResources/JDBC/Report/password</name>
            <value>rjmreport</value>
        </NameValuePair>
        <NameValuePair>
            <name>SharedResources/JDBC/Report/username</name>
            <value>rjmreport</value>
        </NameValuePair>
        <NameValuePair>
            <name>SharedResources/JDBC/SID</name>
            <value>RJMWRX01</value>
        </NameValuePair>
        <NameValuePair>
            <name>SharedResources/JDBC/View/password</name>
            <value>rjmview</value>
        </NameValuePair>
        <NameValuePair>
            <name>SharedResources/JDBC/View/username</name>
            <value>rjmview</value>

and i am having another .txt file containing

SharedResources/JDBC/Admin/username
SharedResources/JDBC/Admin/password
SharedResources/JDBC/Batch/UserName
SharedResources/JDBC/Batch/Password
SharedResources/JDBC/Report/username
SharedResources/JDBC/Report/password
SharedResources/JDBC/View/username
SharedResources/JDBC/View/password

now by using this txt file i have to fetch the corresponding values and store it into another file as

rjmadmin
rjmadmin
rjmbatch
rjmbatch
rjmreport
rjmreport
rjmview
rjmview

The code which i written is as below,

while read line
do
fgrep -e $line -A 1 Sample.xml >> output.txt
done<"values.txt"
sed 's!.*<value>\(.*\)</value>.*!\1!' output.txt > final.txt

the ouput is

Sample.xml:            <name>SharedResources/JDBC/Admin/password</name>
rjmadmin
Sample.xml:            <name>SharedResources/JDBC/Batch/UserName</name>
rjmbatch
Sample.xml:            <name>SharedResources/JDBC/Batch/Password</name>
rjmbatch
Sample.xml:            <name>SharedResources/JDBC/Report/username</name>
rjmreport
Sample.xml:            <name>SharedResources/JDBC/Report/password</name>
rjmreport
Sample.xml:            <name>SharedResources/JDBC/View/username</name>
rjmview
Sample.xml:            <name>SharedResources/JDBC/View/password</name>
rjmview

Please Help...:wall:

Hi, try:

sed 'N;s!.*<value>\(.*\)</value>.*!\1!'

You can use a pipe instead of an intermediate file:

while read line
do 
  grep -Fe "$line" -A 1 Sample.xml
done < values.txt | sed 'N;s!.*<value>\(.*\)</value>.*!\1!' > final.txt

or combine things in awk

awk 'NR==FNR{A[$1];next} $3 in A && getline{print $3}' values.txt FS='[<>]' Sample.xml > final.txt

Hi,
I tried with threee codes
For the first two codes, I am getting same output which i am getting earlier.
there is no output for third code.

Please help me..

Yet another awk 1 liner...

awk -F"<|>" '{if($3 in x){getline;print $3}else x[$1]}' txtfile xmlfile > outfile

Strange I get this with all three:

rjmadmin
rjmbatch
rjmbatch
rjmreport
rjmreport
rjmview
rjmview

What is your OS and version?