Regex to split a string and write the output in another file.


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Regex to split a string and write the output in another file.
# 1  
Old 03-05-2013
Regex to split a string and write the output in another file.

hi,
i am trying to write a script to generate ouput in the following format:

Code:
##### buildappi    abcd_sh    nodebug.#####
##### buildappi    ijk_sh       nodebug.#####

The given string is as follows:

Code:
xtopSharedDLLs = "abcd_sh def_sh ijk_sh " \
                       + "jkl_sh any_sh anyvaria_sh appintf_sh 
jhjkfhk_sh jkdfljklljl_sh " \
                       + "klskdfkkl_sh jsldsdfj_sh hjksdfhuio_sh dimutils_sh 
imdnkhf_sh ouasidfjash_sh kjdfklj_sh hkasdfhuasfih_sh " \
                       + "klanhsdfklahslkf_sh hjasdfjkah_sh ";

The logic behind is that i tried to reach at xtopSharedDllls first and split the values in Tokens and write the output in another file in the format mentioned above.


however I am looking for some help to generate any proper script for that.

please assist me as i am a beginner in perl script.


I have tried to generate the following code.
Please let me know my mistakes and solutions for the same.

Code:
#! /usr/bin/perl -w
#

#use strict;
#use warnings;
#
#
	
	$filename= "xtop_env.txt";
	
	$my_outfile = "output.txt";
	
	open (HANDLE,"<$filename");
	
	open (OUTPUT, ">$my_outfile"); 
	
	
	while(<HANDLE>)
	{
				
                if ($_ =~ m/$xtopSharedDLLs/)
			    @mytoken = split($_);
				for each $mytoken(@mytoken)
				 {
					if ($mytoken =~ m/\=\"\\/)
					next;
					print "OUTPUT @mytoken\n";
				 }
				last if(/;/);
				close OUTPUT;
				 
	}
	
	close HANDLE;


Last edited by Scrutinizer; 03-05-2013 at 03:19 AM.. Reason: code tags
# 2  
Old 03-05-2013
Code:
perl -lne 'BEGIN{open O,">output.txt"};
if(/^xtopShared/../;$/) {
    while (/(\w+?_sh)/g) {print O "##### buildapi $1 nodebug.####"}
}; END{close O}' xtop_env.txt

# 3  
Old 03-05-2013
thanks a lot balajesuri for the reply.

it would be a great help if you could explain me a little about the logic.

Thanks.
# 4  
Old 03-05-2013
Code:
perl -lne # Invoke perl with options -l -n and -e.
-l for adding \n each time it prints something. 
-n to read the input file line by line. 
-e to tell the shell that the following instructions are commands to be sent to the perl interpreter.
'BEGIN{open O,">output.txt"}; # BEGIN block runs only once at the start of the program. Opens the file output.txt in handle O for writing.
if(/^xtopShared/../;$/) { # Find lines between (and including) patterns /^stopShared/ and /;$/. In the world of perl, this is known as flipflop operator
    while (/(\w+?_sh)/g) {print O "##### buildapi $1 nodebug.####"} # Pattern to match each of abcd_sh, ijk_sh, etc.. Continues to match iteratively.
}; END{close O} # END block runs only once during program execution just like BEGIN block and here we close the filehandle O.
' xtop_env.txt # Input file to be read

# 5  
Old 03-05-2013
could you please provide me the complete code so that i could understand things in a better way.

thanks.
# 6  
Old 03-05-2013
Ok, you had churned a perl code in post #1 and there's an alternate version in post #2. See if you can conglomerate them into what you want. Let us know your findings and road blocks.
# 7  
Old 03-05-2013
i am trying to execute the following code

Code:
#! /usr/bin/perl -w
#

# use strict;
#use warnings;
#
#
	
	$filename= "xtop_env.txt";
	
	$my_outfile = "output.txt";
	
	open (HANDLE,"<$filename");
	
	 
	
	
	while(<HANDLE>)
	{	    
		"perl" -lne 'BEGIN{open O,">output.txt"};
               {
			       
                        if(/^xtopShared/../;$/)
			      {
                                      while (/(\w+?_sh)/g) 
	                             {            
                                      print O "##### buildapi $1 nodebug.####"};
                                       }
			   } 
			      
	               
                  END{close O}' xtop_env.txt
				  
				 
	}
	
	close HANDLE;

however following erros occur everytime.

Code:
String found where operator expected at e:\my_work_docs\perl scripts\fman.pl lin
e 40, near "END{close O}'"
  (Might be a runaway multi-line '' string starting on line 30)
        (Missing semicolon on previous line?)
Bareword found where operator expected at e:\my_work_docs\perl scripts\fman.pl l
ine 40, near "END{close O}' xtop_env"
Unquoted string "txt" may clash with future reserved word at e:\my_work_docs\per
l scripts\fman.pl line 43.
syntax error at e:\my_work_docs\perl scripts\fman.pl line 40, near "END{close O}
'"
Execution of e:\my_work_docs\perl scripts\fman.pl aborted due to compilation err
ors.


please suggest

Last edited by Scrutinizer; 03-06-2013 at 06:26 AM.. Reason: Please use code tags for data and code samples ; update: added extra code tags
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to split a file with delimited string?

I have a unix file text.txt with below content aaaaa bbbbbbb cccccccccc As of 2013 ddddddddd eeeeeeeeee eeeeeeeee fffffffff As of 2014 gggggggggggg hhhhhhhhh iiiiiiiiiiiiiiii As of 2016 Now I've to split this file with each file ending with line 'As of' . Please suggest how can I do... (6 Replies)
Discussion started by: Steven77
6 Replies

2. Shell Programming and Scripting

How to Split File based on String?

hi , The scenario is like this, i have a large text files (max 5MB , about 5000 file per day ), Inside almost each line of this file there is a tag 3100.2.22.1 (represent Call_Type) , i need to generate many filess , each one with distinct (3100.2.22.1 Call_Type ) , and one more file to... (3 Replies)
Discussion started by: OTNA
3 Replies

3. Shell Programming and Scripting

Oneliner ---split string to character by piping shell output to perl

Hello, I was trying to split a string to characters by perl oneliner. echo "The quick brown fox jumps over the lazy dog" | perl -e 'split // ' But did not work as with bash script pipe: echo "The quick brown fox jumps over the lazy dog" | fold -w1 | sort | uniq -ic 8 1 T 1... (6 Replies)
Discussion started by: yifangt
6 Replies

4. Shell Programming and Scripting

Match list of strings in File A and compare with File B, C and write to a output file in CSV format

Hi Friends, I'm a great fan of this forum... it has helped me tone my skills in shell scripting. I have a challenge here, which I'm sure you guys would help me in achieving... File A has a list of job ids and I need to compare this with the File B (*.log) and File C (extend *.log) and copy... (6 Replies)
Discussion started by: asnandhakumar
6 Replies

5. Shell Programming and Scripting

grep exact string from files and write to filename when string present in file

I am attempting to grep an exact string from a series of files within a directory and append that output to the filename when it is present in the file. I've been after this all day with no luck. Thanks for your help in advance :wall:. (4 Replies)
Discussion started by: JC_1
4 Replies

6. Shell Programming and Scripting

split input data file and put into same output file

Hi All, I have two input file and need to generate a CSV file. The existing report just "GREP" the records with the Header and Tailer records with the count of records. Now i need to split the data into 25 records each in the same CSV file. id_file (Input file ) 227050994 232510151... (4 Replies)
Discussion started by: rasmith
4 Replies

7. Shell Programming and Scripting

PHP read large string & split in multidimensional arrays & assign fieldnames & write into MYSQL

Hi, I hope the title does not scare people to look into this thread but it describes roughly what I'm trying to do. I need a solution in PHP. I'm a programming beginner, so it might be that the approach to solve this, might be easier to solve with an other approach of someone else, so if you... (0 Replies)
Discussion started by: lowmaster
0 Replies

8. Shell Programming and Scripting

how to get split output of a file, using perl script

Hi, I have file: data.log.1 ### s1 main.build.3495 main.build.199 main.build.3408 ###s2 main.build.3495 main.build.3408 main.build.199 I want to read this file and store in two arrays in Perl. I have following command, which is working fine on command prompt. perl -n -e... (1 Reply)
Discussion started by: ashvini
1 Replies

9. Shell Programming and Scripting

output to write in a file

hi all, when i try to start an applicationserver for an example: ./kStart.sh > out.txt so kStart.sh script will start the application server and write the details to out.txt but in mycase... it is writing to out.txt and as well it is showing in the prompt also... I want only the... (2 Replies)
Discussion started by: raghur77
2 Replies

10. Shell Programming and Scripting

split a file at a specified string

to find log files modification, i want to select all the lines of a file behind a string (found by grep ?). :rolleyes: (6 Replies)
Discussion started by: jpl35
6 Replies
Login or Register to Ask a Question