Visit Our UNIX and Linux User Community


Creating file contents using contents of another file


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Creating file contents using contents of another file
# 1  
Old 02-23-2006
Creating file contents using contents of another file

Hi,

I am not sure how to start doing this so I hope to get some advice as to how to start.

I have 2 files. The source file contains data that I needed is in columns delimited by ";". For example, in this format:

Code:
"CONTINENT","COUNTRY","CITY","ID"
"asia","japan","tokyo","123"
"europe","germany","munich","456"
"africa","eygpt","cairo","789"

The output format is in xml format and the contents is something like:

Code:
<?xml version="1.0"?>
<!DOCTYPE ALR [
        <!ENTITY gt "&amp;gt;">
        <!ENTITY lt "&amp;lt;">
        <!ENTITY quot "&amp;quot;">
]>
<datafile>
        <info ID="#id should be here#">
                <info1>#continent name should be here'</info1>
                <info2> </info2>
                <info3>#country name should be here#</info3>
                <info4>#city name should be here#</info4>
                <info5>some fixed data</info5>
                <info6> </info6>
                <info7> </info7>
                <info8>some fixed data</info8>
                <info9>some fixed data</info9>
                <info10>some fixed data</info10>
                <info11>some fixed data</info11>
        </info>
        <action>
                <attributes>
                        <attributkey id="011" >N</attributkey>
                        <attributkey id="106" >N</attributkey>
                        <attributkey id="114" >N</attributkey>
                        <attributkey id="119" >N</attributkey>
                                        </attributes>
                <comment> </comment>
        </action>
</datafile>

There should be one output file created for each line in the source file.

Anyone can help? Thanks a lot!
# 2  
Old 02-23-2006
See the solution in Want to show files on web page

You need to do something similiar.

Something like this


Code:
HEADER='<?xml version="1.0"?>
<!DOCTYPE ALR [
        <!ENTITY gt "&amp;gt;">
        <!ENTITY lt "&amp;lt;">
        <!ENTITY quot "&amp;quot;">
]>
<datafile>
        <info ID="'

function header {

echo "$HEADER" > output.xml
echo "$1" >> output.xml
echo "\">" >> output.xml

}

Parse the country specific details as

Code:
while read line
do
CONTINENT=$(echo "$line" | awk -F, '{ print $1 }')
COUNTRY=$(echo "$line" | awk -F, '{ print $2 }')
.
.

header $ID
done < input.file

where header is the method given above.
# 3  
Old 02-23-2006
Use Ruby:

Code:
$out_count = 0

def process( str )

  str.strip!
  continent,country,city,id = str[1..-2].split(/","/)

  $out_count += 1
  File.open( "output_#{ $out_count }.xml", "w" ){|handle|

    handle.puts <<"HERE_DOC"
<?xml version="1.0"?>
<!DOCTYPE ALR [
        <!ENTITY gt "&amp;gt;">
        <!ENTITY lt "&amp;lt;">
        <!ENTITY quot "&amp;quot;">
]>
<datafile>
        <info ID="#{ id }">
                <info1>#{ continent }</info1>
                <info2> </info2>
                <info3>#{ country }</info3>
                <info4>#{ city }</info4>
                <info5>some fixed data</info5>
                <info6> </info6>
                <info7> </info7>
                <info8>some fixed data</info8>
                <info9>some fixed data</info9>
                <info10>some fixed data</info10>
                <info11>some fixed data</info11>
        </info>
        <action>
                <attributes>
                        <attributkey id="011" >N</attributkey>
                        <attributkey id="106" >N</attributkey>
                        <attributkey id="114" >N</attributkey>
                        <attributkey id="119" >N</attributkey>
                </attributes>
                <comment> </comment>
        </action>
</datafile>
HERE_DOC

  }
end


# Discard 1st line of file.
gets

# Read rest of file.
while gets
  process( $_ )
end

Save this code in file "make_xml.rb".
Run it with
ruby make_xml.rb my_input_file

The output files are named "output_1.xml", etc.
# 4  
Old 02-24-2006
What is ruby command? When I tried to enter the command line you have written, it says "ruby:command not found"
# 5  
Old 02-24-2006
Ruby is a free programming language.
# 6  
Old 02-24-2006
I can't seem to use it in my unix interface. What should I do?

Quote:
Originally Posted by futurelet
Ruby is a free programming language.
# 7  
Old 02-24-2006
It's readily available and open source. Could you download and install it?

Try this link: http://www.ruby-lang.org/en/20020102.html

Previous Thread | Next Thread
Test Your Knowledge in Computers #8
Difficulty: Easy
macOS is based on the Unix operating system.
True or False?

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Output file name and file contents of multiple files to a single file

I am trying to consolidate multiple information files (<hostname>.Linux.nfslist) into one file so that I can import it into Excel. I can get the file contents with cat *Linux.nfslist >> nfslist.txt. I need each line prefaced with the hostname. I am unsure how to do this. --- Post updated at... (5 Replies)
Discussion started by: Kentlee65
5 Replies

2. Shell Programming and Scripting

ksh Script, Reading A File, Grepping A File Contents In Another File

So I'm stumped. First... APOLOGIES... my work is offline in an office that has zero internet connectivity, as required by our client. If need be, I could print out my script attempts and retype them here. But on the off chance... here goes. I have a text file (file_source) of terms, each line... (3 Replies)
Discussion started by: Brusimm
3 Replies

3. Shell Programming and Scripting

Shell script (sh file) logic to compare contents of one file with another file and output to file

Shell script logic Hi I have 2 input files like with file 1 content as (file1) "BRGTEST-242" a.txt "BRGTEST-240" a.txt "BRGTEST-219" e.txt File 2 contents as fle(2) "BRGTEST-244" a.txt "BRGTEST-244" b.txt "BRGTEST-231" c.txt "BRGTEST-231" d.txt "BRGTEST-221" e.txt I want to get... (22 Replies)
Discussion started by: pottic
22 Replies

4. Shell Programming and Scripting

Folder contents getting appended as strings while redirecting file contents to a variable

Hi one of the output of the command is as below # sed -n "/CCM-ResourceHealthCheck:/,/---------/{/CCM-ResourceHealthCheck:/d;/---------/d;p;}" Automation.OutputZ$zoneCounter | sed 's/$/<br>/' Resource List : <br> *************************** 1. row ***************************<br> ... (2 Replies)
Discussion started by: vivek d r
2 Replies

5. Shell Programming and Scripting

Replace partial contents of file with contents read from other file

Hi, I am facing issue while reading data from a file in UNIX. my requirement is to compare two files and for the text pattern matching in the 1st file, replace the contents in second file by the contents of first file from start to the end and write the contents to thrid file. i am able to... (2 Replies)
Discussion started by: seeki
2 Replies

6. Shell Programming and Scripting

I want to delete the contents of a file which are matching with contents of other file

Hi, I want to delete the contents of a file which are matching with contents of other file in shell scripting. Ex. file1 sheel,sumit,1,2,3,4,5,6,7,8 sumit,rana,2,3,4,5,6,7,8,9 grade,pass,2,3,4,5,6,232,1,1 name,sur,33,1,4,12,3,5,6,8 sheel,pass,2,3,4,5,6,232,1,1 File2... (3 Replies)
Discussion started by: ranasheel2000
3 Replies

7. UNIX for Dummies Questions & Answers

Help with searching for a file in a directory and copying the contents of that file in a new file

Hi guys, I am a newbie here :wall: I need a script that can search for a file in a directory and copy the contents of that file in a new file. Please help me. :confused: Thanks in advance~ (6 Replies)
Discussion started by: zel2zel
6 Replies

8. Shell Programming and Scripting

sed command for copying the contents of other file replacing it another file on specifc pattern

We have 2 file XML files - FILE1.XML and FILE2.xml - we need copy the contents of FILE1.XML and replace in FILE2.xml pattern "<assignedAttributeList></assignedAttributeList>" FILE1.XML 1. <itemList> 2. <item type="Manufactured"> 3. <resourceCode>431048</resourceCode> 4. ... (0 Replies)
Discussion started by: balrajg
0 Replies

9. UNIX for Dummies Questions & Answers

compare 2 file contents , if same delete 2nd file contents

Give shell script....which takes two file names as input and compares the contents, is both are same delete second file's contents..... I try with "diff"...... but confusion how to use "diff" with if ---else Thanking you (5 Replies)
Discussion started by: krishnampkkm
5 Replies

10. Homework & Coursework Questions

Creating a new file that is composed of other contents

Use and complete the template provided. If you don't, your post may be deleted! 1. The problem statement, all variables and given/known data: Write a single command to create a new file composed of the contents of War followed by the the contents of Peace; the new file should be located in... (1 Reply)
Discussion started by: jorogon0099
1 Replies

Featured Tech Videos