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

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

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