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