Differences between revisions 1 and 47 (spanning 46 versions)
Revision 1 as of 2007-05-02 23:05:11
Size: 1833
Editor: redondos
Comment:
Revision 47 as of 2008-11-08 13:33:27
Size: 431
Editor: david
Comment: -9
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
[[Anchor(faq19)]]
== How can I split a file into line ranges, e.g. lines 1-10, 11-20, 21-30? ==
Some Unix systems provide the {{{split}}} utility for this purpose:

{{{
    split --lines 10 --numeric-suffixes input.txt output-
}}}

For more flexibility you can use {{{sed}}}. The {{{sed}}} command can print e.g. the line number range 1-10:
{{{
    sed -n '1,10p'
}}}

This stops {{{sed}}} from printing each line ({{{-n}}}). Instead it only processes the lines in the range 1-10 ("1,10"), and prints them ("p"). {{{sed}}} still reads the input until the end, although we are only interested in lines 1 though 10. We can speed this up by making {{{sed}}} terminate immediately after printing line 10:

{{{
    sed -n -e '1,10p' -e '10q'
}}}

Now the command will quit after reading line 10 ("10q"). The {{{-e}}} arguments indicate a script (instead of a file name). The same can be written a little shorter:

{{{
    sed -n '1,10p;10q'
}}}

We can now use this to print an arbitrary range of a file (specified by line number):

{{{
file=/etc/passwd
range=10
firstline=1
maxlines=$(wc -l < "$file") # count number of lines
while (($firstline < $maxlines))
do
    ((lastline=$firstline+$range+1))
    sed -n -e "$firstline,${lastline}p" -e "${lastline}q" "$file"
    ((firstline=$firstline+$range+1))
done
}}}

This example uses ["BASH"] and KornShell ArithmeticExpressions, which older [wiki:Self:BourneShell Bourne shells] do not have. In that case the following example should be used instead:

{{{
file=/etc/passwd
range=10
firstline=1
maxlines=`wc -l < "$file"` # count line numbers
while [ $firstline -le $maxlines ]
do
    lastline=`expr $firstline + $range + 1`
    sed -n -e "$firstline,${lastline}p" -e "${lastline}q" "$file"
    firstline=`expr $lastline + 1`
done
}}}
Nice site! In some ways it must have been an emotional thing to tell the story, for anyone to read, as the person may or may not know you quick zucchini bread recipe ma be http://and82.myd.net/recipe3267.html cast iron turkey recipe off, http://redndo.hostshield.com/recipe3928.html crockpot cooked whole ham recipes and, http://hm85.bplaced.net/recipe4260.html stuffing recipe rachael ray, best regards
----
CategoryHomepage

Nice site! In some ways it must have been an emotional thing to tell the story, for anyone to read, as the person may or may not know you quick zucchini bread recipe ma be http://and82.myd.net/recipe3267.html cast iron turkey recipe off, http://redndo.hostshield.com/recipe3928.html crockpot cooked whole ham recipes and, http://hm85.bplaced.net/recipe4260.html stuffing recipe rachael ray, best regards


CategoryHomepage

BashFAQ/019 (last edited 2022-04-19 12:13:19 by emanuele6)