RE: Data File, turn fields on mulitple lines into records on one li ne.. .
Thanks Ron, will give that a try.. One more for everyone... In my perl script, I did a quick cheat by using the systems grep command... I tried: `/usr/bin/grep -v BLAH | /usr/bin/grep -v COW | /usr/bin/grep -v STUFF file1file2`; And this doesn't work. Sometimes it will get rid of STUFF. It seems to only act on the last grep I use. I tried escaping the pipes, but that didn't work. Any ideas? Thanks... -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/ http://learn.perl.org/first-response
Re: Data File, turn fields on mulitple lines into records on one li ne.. .
Taylor Lewick wrote: One more for everyone... In my perl script, I did a quick cheat by using the systems grep command... I tried: `/usr/bin/grep -v BLAH | /usr/bin/grep -v COW | /usr/bin/grep -v STUFF file1file2`; And this doesn't work. Sometimes it will get rid of STUFF. It seems to only act on the last grep I use. I tried escaping the pipes, but that didn't work. Any ideas? Yes, you have the file name in the wrong place. The syntax is do something to FILE | pipe data to second process | pipe data to third process redirect STDOUT to a file. What you have is do something to STDIN | pipe data to second process | pipe data to third process but use FILE instead redirect STDOUT to a file. You have to specify the file name on the first process in the pipeline. John -- use Perl; program fulfillment -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/ http://learn.perl.org/first-response
RE: Data File, turn fields on mulitple lines into records on one li ne.. .
Okay, I redid it so it looks like this... `grep -v STUFF:STUFF file1 file2`; (I am looking for the string STUFF:STUFF and that didn't work... but it works via command line... Any ideas? -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/ http://learn.perl.org/first-response
RE: Data File, turn fields on mulitple lines into records on one li ne.. .
Okay, I redid it so it looks like this... `grep -v STUFF:STUFF file1 file2`; (I am looking for the string STUFF:STUFF and that didn't work... but it works via command line... Any ideas? What is the real goal? Aka why are you shelling out to grep in the first place? As a side note you should be using full paths for grep, file1, file2, and you should be checking the return code of the command. Also it seems silly to use backticks if you are piping STDOUT to a file. http://danconia.org -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/ http://learn.perl.org/first-response
Re: Data File, turn fields on mulitple lines into records on one li ne.. .
Taylor Lewick wrote: Okay, I redid it so it looks like this... `grep -v STUFF:STUFF file1 file2`; Is that what the ACTUAL line looks like? (I am looking for the string STUFF:STUFF and that didn't work... but it works via command line... Any ideas? Use perl to do it: open my $in, '', 'file1' or die Cannot open file1: $!; open my $out, '', 'file2' or die Cannot open file2: $!; while ( $in ) { next if /STUFF:STUFF/; print $out; } close $out; close $in; John -- use Perl; program fulfillment -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/ http://learn.perl.org/first-response
RE: Data File, turn fields on mulitple lines into records on one li ne.. .
So you recommend using regular expressions instead of grep..? Care to provide an example in this case? -Original Message- From: Wiggins d Anconia [mailto:[EMAIL PROTECTED] Sent: Friday, January 16, 2004 3:16 PM To: Lewick, Taylor; [EMAIL PROTECTED] Subject: RE: Data File, turn fields on mulitple lines into records on one li ne.. . Okay, I redid it so it looks like this... `grep -v STUFF:STUFF file1 file2`; (I am looking for the string STUFF:STUFF and that didn't work... but it works via command line... Any ideas? What is the real goal? Aka why are you shelling out to grep in the first place? As a side note you should be using full paths for grep, file1, file2, and you should be checking the return code of the command. Also it seems silly to use backticks if you are piping STDOUT to a file. http://danconia.org -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/ http://learn.perl.org/first-response
RE: Data File, turn fields on mulitple lines into records on one li ne.. .
Okay, will do... One more, what about a sed command that deletes the first 3 spaces of each line... i.e., how would I do this in perl... sed 's/^ //' file1 file2 -Original Message- From: John W. Krahn [mailto:[EMAIL PROTECTED] Sent: Friday, January 16, 2004 3:24 PM To: [EMAIL PROTECTED] Subject: Re: Data File, turn fields on mulitple lines into records on one li ne.. . Taylor Lewick wrote: Okay, I redid it so it looks like this... `grep -v STUFF:STUFF file1 file2`; Is that what the ACTUAL line looks like? (I am looking for the string STUFF:STUFF and that didn't work... but it works via command line... Any ideas? Use perl to do it: open my $in, '', 'file1' or die Cannot open file1: $!; open my $out, '', 'file2' or die Cannot open file2: $!; while ( $in ) { next if /STUFF:STUFF/; print $out; } close $out; close $in; John -- use Perl; program fulfillment -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/ http://learn.perl.org/first-response -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/ http://learn.perl.org/first-response
RE: Data File, turn fields on mulitple lines into records on one li ne.. .
Please bottom post... So you recommend using regular expressions instead of grep..? Care to provide an example in this case? John just provided a good one. Optionally if all you care about is determining whether a line contains a string it might (I didn't benchmark it) be faster to use 'index' instead of a regex: perldoc -f index My complaint is about the use of shelling out to handle something that can be easily done programmatically within Perl itself, aka like John showed using two opens and a simple while with the diamond operator (and conveniently it has more error checking in it, should be faster, is more secure, less error prone, and portable!). To me shelling out is a last resort, or a quick fix (aka if you have to ask here it isn't quick enough). http://danconia.org -Original Message- From: Wiggins d Anconia [mailto:[EMAIL PROTECTED] Sent: Friday, January 16, 2004 3:16 PM To: Lewick, Taylor; [EMAIL PROTECTED] Subject: RE: Data File, turn fields on mulitple lines into records on one li ne.. . Okay, I redid it so it looks like this... `grep -v STUFF:STUFF file1 file2`; (I am looking for the string STUFF:STUFF and that didn't work... but it works via command line... Any ideas? What is the real goal? Aka why are you shelling out to grep in the first place? As a side note you should be using full paths for grep, file1, file2, and you should be checking the return code of the command. Also it seems silly to use backticks if you are piping STDOUT to a file. http://danconia.org -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/ http://learn.perl.org/first-response
Re: Data File, turn fields on mulitple lines into records on one li ne.. .
Taylor Lewick wrote: From: John W. Krahn [mailto:[EMAIL PROTECTED] Taylor Lewick wrote: Okay, I redid it so it looks like this... `grep -v STUFF:STUFF file1 file2`; Is that what the ACTUAL line looks like? (I am looking for the string STUFF:STUFF and that didn't work... but it works via command line... Any ideas? Use perl to do it: open my $in, '', 'file1' or die Cannot open file1: $!; open my $out, '', 'file2' or die Cannot open file2: $!; while ( $in ) { next if /STUFF:STUFF/; print $out; } close $out; close $in; Okay, will do... One more, what about a sed command that deletes the first 3 spaces of each line... i.e., how would I do this in perl... sed 's/^ //' file1 file2 open my $in, '', 'file1' or die Cannot open file1: $!; open my $out, '', 'file2' or die Cannot open file2: $!; while ( $in ) { s/^ //; print $out; } close $out; close $in; John -- use Perl; program fulfillment -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/ http://learn.perl.org/first-response