Мені потрібно видалити перші 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
. Я багато разів знаходив щось нове, щоб дізнатися з ваших відповідей. Дякую.