Мне нужно удалить первые 42 строки дампа SQL объемом 2 ГБ.
Я знаю, что могу просмотреть первые строки, используя:
head -n 44 dump.sql
Но есть ли способ их отредактировать или удалить?
Если вы хотите просто просмотреть строки из 43-го, вы можете использовать
tail -n +43 dump.sql
Знак +
важен - без него tail
напечатает последние 43 строки вместо. В качестве альтернативы с помощью «sed»
sed 1,42d dump.sql
Если вы действительно хотите удалить первые 42 строки из исходного файла, вы можете сделать, чтобы sed внес изменения на месте с помощью опции -i
sed -i 1,42d dump.sql
Это кажется самым простым:
sed '1,42d' test.sql > test2.sql
Удалите строки 1-42 из test.sql и сохраните как test2.sql
попробуйте это,
tail -n +43 dump.sql > dump_new.sql
Вы можете использовать Vim в режиме Ex:
ex -s -c '1d42|x' dump.sql
1
перейти к первой строке
42
выбрать 42 линии
d
удалить
x
сохранить и закрыть
Извините, я не могу дать вам текущий код прямо сейчас. Однако попробуйте взглянуть на что-то вроде
tail -n arcv(`wc -l`) -44
. Что нужно сделать (после правильного форматирования) - это подсчитать количество строк в файле (wc -l), вычесть из него 44 (-44 ), а затем распечатайте все, начиная с 45-й строки в файле.
Надеюсь, это поможет и удачи.
Попробуйте,
head -n 42 dump.sql > tmp; cat dump.sql | grep -vxf tmp > dump.sql.new; rm tmp
или
a=$(cat dump.sql| wc -l); tail -n "$((a-42))" dump.sql > dump.sql.new
Просто чтобы добавить это. Если вы используете Mac, вам нужно добавить расширение для резервного копирования. Ответ из этого поста .
sed -i '.bak' 1,42d dump.sql
Из-за sed
несоответствия через Linux и Mac, я разрешил использовать tail -n +43 dump.sql > dump.sql
формат.