split XML file into multiple files based on pattern


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting split XML file into multiple files based on pattern
# 1  
Old 01-09-2012
split XML file into multiple files based on pattern

Hello, I am using awk to split a file into multiple files using command:
nawk '{
if ( $1 == "<process" )
{
n=split($2, arr, "\"");
file=arr[n-1]
}
print > file }' processes.xml

<process name="Process1.process">
<starter>ABC</starter>
</process>
....
....
<process name="Applications/Process2.process">
<starter>DEF</starter>
</process>

I am looking to create 2 files Process1.process and Process2.process, but I am getting error for Process2 as the name is "Applications/Process2.process"

awk: cmd. line:6: (FILENAME=../processes.xml FNR=4) fatal: can't redirect to `Applications/Process2.process' (No such file or directory)

How do I yank "Applications/" as part of the script.

Thanks..
# 2  
Old 01-09-2012
Try something like this little sample:

Code:
awk '
    /<process name=/ {
        file = $0; 
        gsub( ".*=\"", "", file );   
        gsub( "\".*", "", file );
        gsub( ".*/", "", file );
        print file;
    }
' input-file

This assumes this is the last/only name="path/name" assignment on the input line.
# 3  
Old 01-09-2012
Code:
perl -ne 'if(/<process name/../<\/process>/){
if(/<process name/){$f=(split /=/)[1];$f=~tr/">//d;$f=~s/.*\///g;}
open O, ">> $f";print O;close O}' processes.xml

Code:
$ ls -l Process*
-rw-r--r-- 1 root root 68 Jan 10 03:46 Process1.process
-rw-r--r-- 1 root root 81 Jan 10 03:46 Process2.process
$
$ cat Process1.process
<process name="Process1.process">
<starter>ABC</starter>
</process>
$
$ cat Process2.process
<process name="Applications/Process2.process">
<starter>DEF</starter>
</process>
$


Last edited by balajesuri; 01-09-2012 at 11:54 PM..
# 4  
Old 01-10-2012
Thanks a bunch! I tried both, but using piece of the command Agama suggested.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Split file into multiple files based on empty lines

I am using below code to split files based on blank lines but it does not work. awk 'BEGIN{i=0}{RS="";}{x="F"++i;}{print > x;}' Your help would be highly appreciated find attachment of sample.txt file (2 Replies)
Discussion started by: imranrasheedamu
2 Replies

2. Shell Programming and Scripting

Split a single file into multiple files based on a value.

Hi All, I have the sales_data.csv file in the directory as below. SDDCCR; SOM ; MD6546474777 ;05-JAN-16 ABC ; KIRAN ; CB789 ;04-JAN-16 ABC ; RAMANA; KS566767477747 ;06-JAN-16 ABC ; KAMESH; A33535335 ;04-JAN-16 SDDCCR; DINESH; GD6674474747 ;08-JAN-16... (4 Replies)
Discussion started by: ROCK_PLSQL
4 Replies

3. Shell Programming and Scripting

Split xml file into multiple xml based on letterID

Hi All, We need to split a large xml into multiple valid xml with same header(2lines) and footer(last line) for N number of letterId. In the example below we have first 2 lines as header and last line as footer.(They need to be in each split xml file) Header: <?xml version="1.0"... (5 Replies)
Discussion started by: vx04
5 Replies

4. Shell Programming and Scripting

Split a text file into multiple pages based on pattern

Hi, I have a text file (attached the sample). I have also, attached the way the way the files need to be split. We get this file, that will either have 24 Jurisdictions, or will miss some and retain some. Like in the attached sample file, there are only Jurisdictions 03,11,14,15, 20 and 30.... (3 Replies)
Discussion started by: ebsus
3 Replies

5. UNIX for Dummies Questions & Answers

Split a huge 7 GB File Based on Pattern into 4 files

Hi, I have a Huge 7 GB file which has around 1 million records, i want to split this file into 4 files to contain around 250k messages each. Please help me as Split command cannot work here as it might miss tags.. Format of the file is as below <!--###### ###### START-->... (6 Replies)
Discussion started by: KishM
6 Replies

6. Shell Programming and Scripting

Split a big file into multiple files based on first four characters

I have a requirement to split a huge file to smaller text files based on first four characters which look like ABCD 1234 DFGH RREX : : : : : 0000 Each of these records are OF EQUAL bytes with a different internal layout based on the above first digit identifier.. Any help to start... (5 Replies)
Discussion started by: etldev
5 Replies

7. Shell Programming and Scripting

Help needed - Split large file into smaller files based on pattern match

Help needed urgently please. I have a large file - a few hundred thousand lines. Sample CP START ACCOUNT 1234556 name 1 CP END ACCOUNT CP START ACCOUNT 2224444 name 1 CP END ACCOUNT CP START ACCOUNT 333344444 name 1 CP END ACCOUNT I need to split this file each time "CP START... (7 Replies)
Discussion started by: frustrated1
7 Replies

8. Shell Programming and Scripting

Split single file into multiple files using pattern matching

I have one single shown below and I need to break each ST|850 & SE to separate file using unix script. Below example should create 3 files. We can use ST & SE to filter as these field names will remain same. Please advice with the unix code. ST|850 BEG|PO|1234 LIN|1|23 SE|4 ST|850... (3 Replies)
Discussion started by: prasadm
3 Replies

9. Shell Programming and Scripting

Split a file into multiple files based on field value

Hi, I've one requirement. I have to split one comma delimited file into multiple files based on one of the column values. How can I achieve this Unix Here is the sample data. In this case I have split the files based on date column(c4) Input file c1,c2,c3,c4,c5... (1 Reply)
Discussion started by: manasvi24
1 Replies

10. Shell Programming and Scripting

Split a file into multiple files based on the input pattern

I have a file with lines something like. ...... 123_start ...... ....... 123_end .... ..... 456_start ...... ..... 456_end .... ..... 789_start .... .... 789_end (6 Replies)
Discussion started by: abinash
6 Replies
Login or Register to Ask a Question