Re: sed or awk under XP in batch file (DOS box) - print $1 lines then delete $1 lines from a file

John Bartley K7AAY <[email protected]>
Newsgroups gmane.comp.gnu.utils
Organization http://groups.google.com
Message-ID <[email protected]>
On May 1, 4:02 pm, [email protected] (Bob Proulx) wrote:
> John Bartley K7AAY wrote:
> > I need to print $1 lines from a file, and then delete that number of
> > lines.
> > $1 has been derived in the prior line with
> > wc -l sourcefile.txt | awk '{$1 /= 4 ; $1 = int($1) ; print $1 }'
>
> That all looks okay.  But I would probably personally do it all in the
> shell.  Try this:
>
>   echo $(( $(wc -l < sourcefile.txt) / 4 ))
>
> > I've tried numerous awk and sed statements, a la:
>
> > sed -e -n "$1,p" sourcefile.txt > list.1
> > sed -i "$1d" sourcefile.txt
> > sed $1q list.txt > list.1 & sed -i $1d sourcefile.txt
> > awk "{(FNR < $1); print}" sourcefile.txt > list.1
>
> Try this:
>
>   l=$(( $(wc -l < sourcefile.txt) / 4 ))
>   sed --in-place "1,${l}d" sourcefile.txt
>
> Bob

Dangit, those don't work as you expected with XP and GNUwin32

echo $(( $(wc -l < sourcefile.txt) / 4 ))
The system cannot find the file specified.

l=$(( $(wc -l < sourcefile.txt) / 4 ))
The system cannot find the file specified.

sed --in-place "1,${l}d" sourcefile.txt
sed: -e expression #1, char 7: extra characters after command
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.