remove a primeira linha do bash

6

Você tem um método para remover rapidamente a primeira linha de um arquivo no bash shell? Quero dizer usando sed ou coisas assim.

    
por GuillaumeThomas 16.05.2011 / 16:30

3 respostas

16

One-liners na ordem inversa do comprimento, portátil, a menos que seja indicado.

sed (precisa de GNU sed para -i ):

sed -i 1d file

ed (precisa, por exemplo, bash para $'...' expansão e aqui 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 internos:

while IFS= read -r; do ((i++)) && printf %s\n "$REPLY" >> outfile; done < infile
    
por 20.03.2017 / 11:17
9
$ tail -n +2 <<< $'1\n2\n3'
2
3
    
por 16.05.2011 / 16:32
0

Usando o 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."

Adicione qualquer iflags= e oflags= que você possa precisar - com vírgulas separando-as.

    
por 29.01.2015 / 19:53

Tags