Adding two files


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Adding two files
# 1  
Old 07-28-2015
Adding two files

I have a file which entry is below
cat file1

Code:
user1
user2
user3

another file, which entry is below
cat file2
Code:
Proj1 Fin
Proj2 Marketing

I want O/P as below
Code:
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
Code:
#!/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
Code:
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.

Last edited by rbatte1; 07-28-2015 at 06:55 AM.. Reason: Changed ICODE tags to CODE tags
# 2  
Old 07-28-2015
Hello Anshu,

You can try following and let me know if this helps you.
Code:
while read line1; do while read line2; do echo "Delete User Profile \"$line1\" FROM $line2"; done < "file2"; done < "file1"

OR
Code:
while read line1
do
     while read line2
     do
        echo "Delete User Profile \"$line1\" FROM $line2"
     done < "file2"
done < "file1"

Output will be as follows.
Code:
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.
Code:
 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


Thanks,
R. Singh

Last edited by RavinderSingh13; 07-28-2015 at 06:51 AM.. Reason: Added a awk solution for same now
This User Gave Thanks to RavinderSingh13 For This Post:
# 3  
Old 07-28-2015
Code:
#!/bin/ksh
 while read user
do
  while read proj nm
  do
    echo "Delete user profile \"${user}\" FROM ${proj} ${nm}"
  done < file2
done <file1 > OP1

Ignore this..I haven't seen the solution already provided
This User Gave Thanks to SriniShoo For This Post:
# 4  
Old 07-28-2015
Please use code tags, not icode tags!

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:
Code:
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':
Code:
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

This User Gave Thanks to RudiC For This Post:
# 5  
Old 07-28-2015
Thanks to all,
while and IFS is working exactly as requirement ..!
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Adding unzipped files to a Zip

Hey all, I have a zip file which I received, and I need to replace one of the files inside of it. I tried the obvious solution of unzipping the zip, replacing the file, and rezipping, but the following happened: Original Zip Size: 79MB Unzipped Size 80MB New Zip: 36MB When I feed the... (2 Replies)
Discussion started by: DeanLeitersdorf
2 Replies

2. Red Hat

RPM package, conditional adding files in "%files" section

Hello, Is it possible to specify a list of files to be included in an RPM package (section "% files") according to some condtions. For example, if a particular condition is true, do not include the file "X". If not include it. Thank you for your help. Regards (1 Reply)
Discussion started by: louzorios
1 Replies

3. Shell Programming and Scripting

Help with joining files and adding headers to files

Hi, I have about 20 tab delimited text files that have non sequential numbering such as: UCD2.summary.txt UCD45.summary.txt UCD56.summery.txt The first column of each file has the same number of lines and content. The next 2 column have data points: i.e UCD2.summary.txt: a 8.9 ... (8 Replies)
Discussion started by: rrdavis
8 Replies

4. Shell Programming and Scripting

Adding Multiple Files via Columns

I have a number of files with multiple rows that I need to add together. Let say I have 10 files: Each file has a great number of rows and columns. I need to add these files together the following way. In other words, If, for example, file A occupies Columns 1 to 19, I want to add file B... (7 Replies)
Discussion started by: Ernst
7 Replies

5. UNIX for Dummies Questions & Answers

Adding new columns to txt files

Dear all, I have a question. I have a txt.file as below. i want to add 3 more columns: column3=conlum 2*column2; column4=(1-column2)*(1-column2); column5=1-column3-column4. Do you know how to do it? Thanks a lot! file: column1 column2 a 1 b 20 c 30 d 3 ... (2 Replies)
Discussion started by: forevertl
2 Replies

6. Shell Programming and Scripting

Adding the trailers in two files

I have two files File1 has trailer as below TR|2|120 File2 has trailer as below TR|1|100 it should add both the fields from trailer of file 1 and 2....so that file2 has a trailer as TR|3|220 (3 Replies)
Discussion started by: Deepak62828r
3 Replies

7. Shell Programming and Scripting

renaming files or adding a name in the beginning of all files in a folder

Hi All I have a folder that contains hundreds of file with a names 3.msa 4.msa 21.msa 6.msa 345.msa 456.msa 98.msa ... ... ... I need rename each of this file by adding "core_" in the begiining of each file such as core_3.msa core_4.msa core_21.msa (4 Replies)
Discussion started by: Lucky Ali
4 Replies

8. Shell Programming and Scripting

Adding columns of two files

Hello everyone, I have two files containing 6 columns and thousands of rows. I want to add them (i.e. first column of first file + first column of second file and so on) and print the output in a third file. Can you please help me. Thanks a lot (7 Replies)
Discussion started by: chandra321
7 Replies

9. Shell Programming and Scripting

awk adding columns from different files

Hi, I have two files and I need to add column 3 of file1 to column 3 of file 2 > file3 I also need to repeat for column 4. Thanks (1 Reply)
Discussion started by: dsstamps
1 Replies

10. Shell Programming and Scripting

adding two files

Dear Experts, I am facing some problem. I have two files, every field is separated by comma "," separator. And the value is in numeric FILEA 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 FILE B ... (7 Replies)
Discussion started by: shary
7 Replies
Login or Register to Ask a Question