6

У вас есть способ быстро удалить первую строку файла в оболочке bash? Я имею в виду использование sed или тому подобное.

3 ответа3

17

Однострочные в обратном порядке длины, переносные, если не указано иное.

sed (требуется GNU sed для -i):

sed -i 1d file

ed (требуется, например, bash для расширения $'...' и строки 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 :

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

Используя дд

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

Добавьте любые iflags= и oflags= которые могут вам понадобиться, с запятыми, разделяющими их.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .