![]() |
|
|
google unix.com
|
|||||||
| Forums | Register | Forum Rules | Links | Albums | FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read |
| Shell Programming and Scripting Post questions about KSH, CSH, SH, BASH, PERL, PHP, SED, AWK and OTHER shell scripts and shell scripting languages here. |
More UNIX and Linux Forum Topics You Might Find Helpful
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Newbie help with New Line & Blank Line | kthatch | UNIX for Dummies Questions & Answers | 5 | 01-23-2009 04:19 PM |
| sed: delete regex line and next line if blank | one71 | Shell Programming and Scripting | 2 | 09-18-2008 06:53 AM |
| How to get last non-blank line? | tqlam | Shell Programming and Scripting | 6 | 01-17-2008 07:13 PM |
| Blank line ? | varungupta | UNIX for Advanced & Expert Users | 2 | 09-10-2007 01:52 PM |
| cant find command that returns blank line | jeffersno1 | UNIX for Dummies Questions & Answers | 2 | 11-15-2001 04:14 PM |
![]() |
|
|
LinkBack | Thread Tools | Search this Thread | Rate Thread | Display Modes |
|
|
|
||||
|
Find line before blank
Hello,
I actually have two issues. First, here is the file the way it is now. someword someword:1 new-word new-word abcd someword someword:10 new-word new-word abcd thisis whatIneed:3 someword someword:5 new-word new-word abcd I need to get the line before the 2 blanks and move it to a different file. I've tried using sed, but keep getting error messages. Also, there may be none, one, or several instances of this within the file. I should probably also mention that this is part of a larger perl script I'm working on. I have everything else done, the file above is actually generated by the script. I also have everything below it complete, but am completely stuck at this point. Any help with either would be appreciated. Last edited by ddrew78; 03-18-2009 at 07:43 PM.. |
|
||||
|
Here is mine, ugly but should do the trick
(not tested) Code:
awk 'BEGIN{i=0}
{ content[NR]=$0; if (($0=="")) {b[i]=NR;i++} j++;}
END
{
for (x=0;x<=b[0];x++)
{print content[x] > "file1" } for (x=b[1];x<=j; x++) { print content[x] > "file2"}
}' /var/tmp/file
|
|
||||
|
Re: Find line before blank
summer cherry,
here is what I ended up with in my script: #!/usr/bin/perl open $fh,"<","myfile"; open $out,">>","mynewfile"; undef $/; $str=<$fh>; print $out split(/\n^$\n^$\n/s,$str,2)[0]; I got the error message below. Any ideas? I appreciate the help. syntax error at ansipre2 line 7, near ")[" Execution of ansipre2 aborted due to compilation errors. |
|
||||
|
Re: Find line before blank
Quote:
Thanks for the reply. Unfortunately I'm new to this and can't figure out how to implement this into my script. Below is the last two lines of the script to get the file I had above. system "dos2unix ansi3 > ansi7"; system "mv ansi7 ansi3"; Thanks again for any help. |
|
||||
|
Thanks to all who helped me on this. After much pain I decided to go a different route and instead appended the repeating string to it's previous line. Granted, that resulted in a few extra lines of code, but what the heck. Just an FYI, below is the code that ended up giving me the lines I was originally looking for.
open(FILE7, ">file7"); open(MYINPUTFILE, "file3"); while(<MYINPUTFILE>) { chomp; my $someword = ""; my $new-word = ""; if (/^someword/) {$someword = $_;while(<MYINPUTFILE>) {chomp; if (/^new-word/){ print FILE7 "$someword $_"; print FILE7 "\n";} last; } } } system "mv file7 file3"; system "dos2unix file3 > file7"; system "mv file7 file3"; system 'cat file3 | cut -d " " -f1-2 >>file0'; system "sort -n file0 >file1"; system "mv file1 file0"; system "sort file0 | uniq -u > file1"; system "mv file1 file0"; |
![]() |
| Bookmarks |
| Thread Tools | Search this Thread |
| Display Modes | Rate This Thread |
|
|