Remove First Line in Bash

Remove First Line in Bash

Do you have a method to quickly remove the first line of a file in bash shell ? I mean using sed or stuff like that.

1

3 Answers

One-liners in reverse order of length, portable unless noted.

sed (needs GNU sed for -i):

sed -i 1d file

ed (needs e.g. bash for $'...' expansion and here string):

ed file <<< $'1d\nw\nq'

awk:

awk NR\>1 infile > outfile

tail:

tail -n +2 infile > outfile

read + cat:

(read x; cat > outfile) < infile

bash built-ins:

while IFS= read -r; do ((i++)) && printf %s\\n "$REPLY" >> outfile; done < infile
3
$ tail -n +2 <<< $'1\n2\n3'
2
3

Using dd

fn="The-BIG-FILE.txt"
fll=$(( $(head -n 1 $fn | wc -c) + 1))
dd if="$fn" of="${fn}.out" bs=1M iflags=skip_bytes skip=$fll
echo "Files differ by $(( $(find $fn* -printf "%s - \n" ; echo "0") )) bytes. First line of $fn is $fll bytes."

Add any iflags= and oflags= you might need - with commas separating them.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

James H. Sterling
Author

James H. Sterling

James Sterling reports on renewable energy developments, climate policy, ecological conservation, and green tech innovations around the globe.