Мені потрібно видалити перші 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 -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обробляти його тільки один раз.
Просто, щоб додати це. Якщо ви перебуваєте на Mac, вам потрібно додати розширення для резервного копіювання. Відповідь з цієї публікації .
sed -i '.bak' 1,42d dump.sql
Через sedрозбіжності в Linux та Mac я вирішив використовувати tail -n +43 dump.sql > dump.sqlформат.
tail. Я багато разів знаходив щось нове, щоб дізнатися з ваших відповідей. Дякую.