Мне нужно удалить первые 42 строки дампа SQL на 2 ГБ.
Я знаю, что я могу просматривать первые строки, используя:
head -n 44 dump.sql
Но есть ли все-таки редактировать или удалить их?
Если вы хотите просто просмотреть строки из 43-го, вы можете использовать
tail -n +43 dump.sql
Знак + важен - без него tail отобразит представление ! d1] 43 строки. Альтернативно с 'sed'
sed 1,42d dump.sql
Если вы хотите действительно удалить первые 42 строки из исходного файла, вы можете сделать sed внести изменения в место с помощью опции -i
попробуйте это,
tail -n +43 dump.sql > dump_new.sql
Вы можете использовать Vim в режиме Ex:
ex -sc '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