Visit Our UNIX and Linux User Community


PERL: removing blank lines from multiple files


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting PERL: removing blank lines from multiple files
# 1  
Old 09-19-2009
PERL: removing blank lines from multiple files

Hi Guru's , I have a whole bunch of files in /var/tmp that i need to strip any blank lines from, so ive written the following script to identify the lines (which works perfectly).. but i wanted to know, how can I actually strip the identified lines from the actual source files ??





Code:
	my @all = qx{ls /var/tmp}; # perform an ls on the folder
	
	foreach (@all) {
				
		open(IN, "/var/tmp/$_");
			chomp(my $file = $_);
			my $counter = "0";
			while  (<IN>) {
				$counter++;
				if ($_ =~ /^$/) {
				  print "blank line found in $file at line number $counter\n";
                                  #something here to go and fix it in the actual file ?
				}
			}
		close(IN);
	}

Any help or advice on this would be greatly appreciated
# 2  
Old 09-19-2009
Code:
sed -i '/^$/d' /tmp/*

Careful, this will change any file in /tmp
# 3  
Old 09-19-2009
thanks Scrutinizer for your response ... im ideally looking for a way in perl to do this

thank you anyway
# 4  
Old 09-19-2009
I think Scrutinizer's method is a very simple and elegant way of doing what you want to do.
I fail to understand why you would want to open each file and read it line by line just to remove blank lines.
You have a loaded Uzi and you want to club someone to death with it ?

tyler_durden
# 5  
Old 09-19-2009
There is no quick one or two liners native to perl to do this. If you want to use the perl program you have already written I would insert the sed statement Scrutinizer posted after the close file line in your foreach structure followed by a copy statement using the system function.


Code:
system("sed -i '/^$/d' $_ > ${_}.noblanks")
system("cp ${_}.noblanks ${_}")

# 6  
Old 09-19-2009
Quote:
Originally Posted by durden_tyler
I think Scrutinizer's method is a very simple and elegant way of doing what you want to do.
I fail to understand why you would want to open each file and read it line by line just to remove blank lines.
You have a loaded Uzi and you want to club someone to death with it ?

tyler_durden
Hi Tyler, the files in the /var/tmp folder are generated from another process which has been known (annoyingly) to produce output files with blank lines ..the reason i have to go through each file line by line is because i need to identify exactly which line number in which file is returning blank and send it to a log file. you are right, there is no need for me to actually fix these issues within this actual script but i thought it make sense to do so if possible

I read on another site that I can set my file location within my script to say $file and then run this
Code:
my $file = "/var/tmp/0629AN1208.net";
$file =~ s/^\n//g;

but that doesnt seem to work, whereas if i run the equivalent one liner from the command line (see below) it works perfectly .

Code:
perl -pi -e "s/^\n//" /var/tmp/0629AN1208.net



is there a way to convert that one liner into something I can run within a perl script ?
# 7  
Old 09-19-2009
Look at my above post. It does just that.

Previous Thread | Next Thread
Test Your Knowledge in Computers #395
Difficulty: Medium
HP produced an RMB implementation for Microsoft Windows called HP Instrument BASIC for Windows.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Removing carriage returns from multiple lines in multiple files of different number of columns

Hello Gurus, I have a multiple pipe separated files which have records going over multiple Lines. End of line separator is \n and records going over multiple lines have <CR> as separator. below is example from one file. 1|ABC DEF|100|10 2|PQ RS T|200|20 3| UVWXYZ|300|30 4| GHIJKL|400|40... (7 Replies)
Discussion started by: dJHa
7 Replies

2. Shell Programming and Scripting

Removing multiple lines from input file, if multiple lines match a pattern.

GM, I have an issue at work, which requires a simple solution. But, after multiple attempts, I have not been able to hit on the code needed. I am assuming that sed, awk or even perl could do what I need. I have an application that adds extra blank page feeds, for multiple reports, when... (7 Replies)
Discussion started by: jxfish2
7 Replies

3. Shell Programming and Scripting

Removing blank lines

Hi, my input file is like this I want to remove the blank line. "/home/rit/sandbox/garuda/data/test/woman/T_RITK_F0008_ML_100080039.lab" r a N e l a k sh a m . "/home/rit/sandbox/garuda/data/test/woman/T_RITK_F0008_ML_100070453.lab" a v a s (4 Replies)
Discussion started by: sreejithalokkan
4 Replies

4. Shell Programming and Scripting

Removing blank lines from a file

Hi All, How do i remove continuos blank lines from a file. I have a file with data: abc; def; ghi; jkl; mno; pqr; In the above file, there are two blank lines. I want to remove, one out of them. My output should look like: (2 Replies)
Discussion started by: raosr020
2 Replies

5. UNIX for Dummies Questions & Answers

Removing blank lines not working

In my bash script I want to echo lines in a file and ensure no blank lines are echoed:for i in $(cat txt) do echo $i | sed 's/|/ /g;s/ SEARCHTERM$//g;s/ /\r\n/g;s/^$/d' done Keep in mind this is a fragment so ignore the fact that the for loop is not closed. When I add the "s/^$/d' per... (12 Replies)
Discussion started by: MaindotC
12 Replies

6. UNIX for Dummies Questions & Answers

Removing Lines Shared by Multiple Files

Hey everyone, I have a question about comparing two files. I have two lists of files. The first list, todo.csv, lists a series of compounds my supervisor wants me to perform calculations on. The second list, done.csv, lists a series of compounds that I have already performed calculations on.... (2 Replies)
Discussion started by: Stuart Ness
2 Replies

7. UNIX for Dummies Questions & Answers

Removing blank lines in a file

Hi I have a text file that has blank lines at different places. How to remove all the blank lines in a file? Thanks Ashok (3 Replies)
Discussion started by: ashok.k
3 Replies

8. Shell Programming and Scripting

removing duplicate blank lines

Hi, how to remove the blank lines from the file only If we have more than one blank line. thanks rameez (8 Replies)
Discussion started by: rameezrajas
8 Replies

9. Shell Programming and Scripting

Removing Blank Lines

Hi i have the below lines from a file 7538 PRGRP450800PERSONAL SOAP AND BATH ADDITIV 7036 PRGRP450800PERSONAL SOAP AND BATH ADDITIV 7036 PRGRP450800PERSONAL SOAP AND BATH ADDITIV 7036... (3 Replies)
Discussion started by: dhanamurthy
3 Replies

10. Shell Programming and Scripting

Adding 3 Lines to Multiple c and h files with perl

Hello, i need some help with a perl script. i need to add the lines: #ifdef LOGALLOC #include "logalloc.h" #endif // LOGALLOC To all c and h files in a project with subdirectories. Logalloc is a tool to log all *alloc and free's in a text file, it defines the *alloc funtions new.... (2 Replies)
Discussion started by: Lazzar
2 Replies

Featured Tech Videos