split whitespace help


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting split whitespace help
# 1  
Old 07-14-2008
split whitespace help

I have a file that I am spliting and parsing, if data starts with an N/n toos it (which works) but I want it to also see if the data is blank and toss it.

What I have does not toss the blank space for dduck????

here is the data file and code I have.....

efudd 7546
bbunny N0542
tdevil 6666
dduck
mmouse 8888

Code:
open OUTER_HANDLE,"userids" or die "$!:$?";
while (<OUTER_HANDLE>) {
        my @userData = split;
        # print "DEBUG: Start... Number is [ $userData[1] ]\n";
        if ( ! ($userData[1] =~ /[n|N]/)
        or ! ($userData[1] =~ /\s/) ) {
               # print "DEBUG: userData[0] : [$userData[0]]\n";
               # print "DEBUG: userData[1] : [$userData[1]]\n";
                ripItOut( $userData[0], $userData[1] );
        }
}

close OUTER_HANDLE;

The usernames and numbers get printed out later on in the script. bbunny gets ignored as expected, but dduck prints out.
Thanks for any input.
theninja

Last edited by theninja; 07-14-2008 at 05:05 PM..
# 2  
Old 07-14-2008
Is this what your looking for?


=---START---=

open OUTER_HANDLE,"names.txt" or die "$!:$?";
while (<OUTER_HANDLE>) {
my @userData = split(/ +/, $_);
# print "DEBUG: Start... Number is [ $userData[1] ]\n";
if ( trim($userData[0]) !~ /Nn/ && trim($userData[1]) !~ /Nn/ && $userData[1] != "" ) {
# print "DEBUG: userData[0] : [$userData[0]]\n";
# print "DEBUG: userData[1] : [$userData[1]]\n";
print" $userData[0], $userData[1]\n";
}
}

close OUTER_HANDLE;



sub trim($) {
my $string = shift;
$string =~ s/^\s+//;
$string =~ s/\s+$//;
return $string;
}

=---END---=
# 3  
Old 07-14-2008
Question a different way to approach the matter

Can you use the following logic?

Code:
> cat file99
efudd 7546
bbunny N0542
tdevil 6666
dduck
mmouse 8888
> cat file99 | grep [0-9][0-9] | grep -v [nN][0-9][0-9]
efudd 7546
tdevil 6666
mmouse 8888

# 4  
Old 07-15-2008
Thanks for the replies,

I was able to get it to work with the following...

Code:
open OUTER_HANDLE,"userids" or die "$!:$?";
while (<OUTER_HANDLE>) {
        @userData = split;
                  $arraySize = @userData;
                  #print "DEBUG: Array size [$arraySize]\n";
                  if ( $arraySize == 2 ) {
                        # print "DEBUG: Start... Number is [$userData[1]]\n";
                        if ( ($userData[1] !~ /^N/) ) {
               #print "DEBUG: userData[0] : [$userData[0]]\n";
               #print "DEBUG: userData[1] : [$userData[1]]\n";
                ripItOut( $userData[0], $userData[1] );
                                }
        }
}

close OUTER_HANDLE;

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Separate by more than whitespace.

This is my file .........hostname.............this is hostname .........alias...................alias name Remark use dot(.) instead of whitespace B'cuz this forum not allow to use more whitespace. --------------------------------------- I sperate by whitespace not work. awk 'BEGIN {FS=" "}... (4 Replies)
Discussion started by: cyberking
4 Replies

2. Shell Programming and Scripting

awk to split one field and print the last two fields within the split part.

Hello; I have a file consists of 4 columns separated by tab. The problem is the third fields. Some of the them are very long but can be split by the vertical bar "|". Also some of them do not contain the string "UniProt", but I could ignore it at this moment, and sort the file afterwards. Here is... (5 Replies)
Discussion started by: yifangt
5 Replies

3. UNIX for Dummies Questions & Answers

adding whitespace

Hi guys, I am working with large data sets and often times realize that not all of the columns are aligned correctly (sometimes rows will be shifted). So when I try to do something like: awk '{ if ($2 > 30 && $5 == $3){print}}' file > output it won't really work since some of the rows... (2 Replies)
Discussion started by: verse123
2 Replies

4. Shell Programming and Scripting

How to match (whitespace digits whitespace) sequence?

Hi Following is an example line. echo "192.22.22.22 \"33dffwef\" 200 300 dsdsd" | sed "s:\(\ *\ \):\1:" I want it's output to be 200 However this is not the case. Can you tell me how to do it? I don't want to use AWK for this. Secondly, how can i fetch just 300? Should I use "\2"... (3 Replies)
Discussion started by: shahanali
3 Replies

5. UNIX for Advanced & Expert Users

whitespace problem

I have a single string as below: Rat run after Cat i.e. there is a single whitespace after Cat. This causes my file to fail. Is there a way I can remove any whitespace at the end of any string. I tried sed 's/ *//g', but it removes all white space and the above string becomes... (10 Replies)
Discussion started by: RubinPat
10 Replies

6. UNIX for Dummies Questions & Answers

remove whitespace

I combined 2 files using the paste command. It gave me something like this: 123445 ,AABBNN 22344 ,BBVVMM I want to remove the whitespace between the end of string 1 and the comma (there is more blank space than my post is showing). Would I... (2 Replies)
Discussion started by: nickg
2 Replies

7. Shell Programming and Scripting

Whitespace Issues

Hello forums! I've been tinkering with a shell script to partition and restore content to a drive based on a type of file in a given directory. My goal is for my script to assemble several restore images, partition the drive based on the images and to then restore those images to the partitions... (1 Reply)
Discussion started by: rkasowan
1 Replies

8. UNIX for Dummies Questions & Answers

Split a file with no pattern -- Split, Csplit, Awk

I have gone through all the threads in the forum and tested out different things. I am trying to split a 3GB file into multiple files. Some files are even larger than this. For example: split -l 3000000 filename.txt This is very slow and it splits the file with 3 million records in each... (10 Replies)
Discussion started by: madhunk
10 Replies

9. Shell Programming and Scripting

Delete whitespace

Hi, I have been trying to remove whitespace from a file using sed. Here is an example of what im trying to do: www1 = www1 www2 = www2 www3 = www3 and all the way to 300 and i want it to look like: www1=www1 www2-www2 www3=www3 again upto 300 Any help... (12 Replies)
Discussion started by: truck7758
12 Replies

10. Shell Programming and Scripting

trim whitespace?

I'm trying to find a command that will trim the white space off a string. e.g. $str = " stuf " $str = trim ( $str ) echo $str // ouput would just be stuf Thanks, Mark (4 Replies)
Discussion started by: msteudel
4 Replies
Login or Register to Ask a Question