Delete User Profile "user1" FROM Proj1 Fin
Delete User Profile "user1" FROM Proj2 Marketing
Delete User Profile "user2" FROM Proj1 Fin
Delete User Profile "user2" FROM Proj2 Marketing
Delete User Profile "user3" FROM Proj1 Fin
Delete User Profile "user3" FROM Proj2 Marketing
I wrote a small script as below but i am not getting require O/P. script and Output of script is below.
script
#!/bin/bash
for i in `cat file1`
do
for j in `cat file2`
do
echo "Delete User Profile \""$i"\" FROM "$j"" >> OP1
done
done
O/P of script
Delete User Profile "user1" FROM Proj1
Delete User Profile "user1" FROM Fin
Delete User Profile "user1" FROM Proj2
Delete User Profile "user1" FROM Marketing
Delete User Profile "user2" FROM Proj1
Delete User Profile "user2" FROM Fin
Delete User Profile "user2" FROM Proj2
Delete User Profile "user2" FROM Marketing
Delete User Profile "user3" FROM Proj1
Delete User Profile "user3" FROM Fin
Delete User Profile "user3" FROM Proj2
Delete User Profile "user3" FROM Marketing
Can anyone please help me what wrong I am doing. I tried to use awk but it also not working as per requirement.
You can try following and let me know if this helps you.
while read line1; do while read line2; do echo "Delete User Profile \"$line1\" FROM $line2"; done < "file2"; done < "file1"
OR
while read line1
do
while read line2
do
echo "Delete User Profile \"$line1\" FROM $line2"
done < "file2"
done < "file1"
Output will be as follows.
Delete User Profile "user1" FROM Proj1 Fin
Delete User Profile "user1" FROM Proj2 Marketing
Delete User Profile "user2" FROM Proj1 Fin
Delete User Profile "user2" FROM Proj2 Marketing
Delete User Profile "user3" FROM Proj1 Fin
Delete User Profile "user3" FROM Proj2 Marketing
Or with an awk approach following may help you too.
awk -vs1="\"" 'FNR==NR{A[++i]=$0;next} {for(j=1;j<=i;j++){print "Delete User Profile " s1 $0 s1 " FROM " A[j]}}' file2 file1
The effect that bothers you is one of the drawbacks of the for construct, as it can't tell spaces embedded in lines/variables from item separators. Two while loops do help:
while read USER
do while read PROJNR PRNAM
do echo "Delete User Profile \""$USER"\" FROM "$PRNAM""
done < file2
done < file1
---------- Post updated at 11:56 ---------- Previous update was at 11:53 ----------
If you insist on the for loops, set IFS=$'\n' :
IFS=$'\n'
for i in `cat file1`; do for j in `cat file2`; do echo "Delete User Profile \""$i"\" FROM "$j""; done; done
Delete User Profile "user1" FROM Proj1 Fin
Delete User Profile "user1" FROM Proj2 Marketing
Delete User Profile "user2" FROM Proj1 Fin
Delete User Profile "user2" FROM Proj2 Marketing
Delete User Profile "user3" FROM Proj1 Fin
Delete User Profile "user3" FROM Proj2 Marketing