Мне нужно удалить первые 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. Я много раз находил что-то новое, чтобы узнать из ваших ответов. Благодарю.