Мне нужно удалить первые 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 1,42d dump.sql
Если вы хотите действительно удалить первые 42 строки из исходного файла, то вы можете сделать Sed, чтобы внести изменения на месте с помощью -i
опции
sed -i 1,42d dump.sql
sed -i 1,50000000d 17GigFile
создает временный файл, sedXYZ
который потребляет гораздо больше гигабайт. Есть ли подход без временных файлов?
tail -n +43
и head -n 44
как упоминалось в вопросе?
Это кажется самым простым:
sed '1,42d' test.sql > test2.sql
Удалите строки 1-42 из test.sql и сохраните как test2.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-й строки в файле.
Надеюсь, что это помогает и удачи.
wc -l
на файл, обработать его в два раза, в то время как sed
и tail
обрабатывать его только один раз.
Из-за sed
расхождений между Linux и Mac я решил использовать tail -n +43 dump.sql > dump.sql
формат.
tail
. Я много раз находил что-то новое, чтобы узнать из ваших ответов. Благодарю.