Мне нужно удалить первые 42 строки SQL-дампа объемом 2 ГБ.
Я знаю, что могу просмотреть первые строки, используя:
head -n 44 dump.sql
Но есть ли в любом случае возможность отредактировать или удалить их?
Мне нужно удалить первые 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
сохранить и закрыть
Потому что sed
несоответствия между Linux и Mac, я решил использовать tail -n +43 dump.sql > new.sql
формат.
Просто чтобы добавить это. Если вы используете Mac, вам необходимо добавить расширение резервного копирования. Ответ из этого пост.
sed -i '.bak' 1,42d dump.sql
Извините, я не могу дать вам реальный код прямо сейчас.Тем не менее, попробуйте взглянуть на что-то вроде
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