help-gnu-utils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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


From: John Bartley K7AAY
Subject: Re: sed or awk under XP in batch file (DOS box) - print $1 lines then delete $1 lines from a file
Date: Thu, 1 May 2008 16:13:35 -0700 (PDT)
User-agent: G2/1.0

On May 1, 4:02 pm, b...@proulx.com (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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]