28Jun

Како уклонити линије из средине датотеке користећи Линук терминал

Када управљате сопственим серверима, једна од ствари које завршавате на полу редовној основи је извлачење ствари из средине датотеке.Можда је датотека дневника, или требате додати једну таблицу из средине вашег бацкуп-а МиСКЛ-а, као што сам и урадио.

Да бисте сазнали бројеве линија, једноставна греп -н наредба је обавила посао( аргумент -н излази бројеве линије).Ово је лако открити шта је потребно за извлачење.

греп -н вп_постс ховтогеекдб010114.бак |више

Резултати у нечему овоме, који приказује бројеве линија преко леве стране излаза.Пипинг све у "више" се уверава да можете видети прву линију без њеног померања.Сад имате број линије за почетак, и вероватно са којим ће се завршити.

4160: - Структура табеле за табелу `вп_постс` 4163: ДРОП ТАБЛЕ ИФ ЕКСИСТС` вп_постс`;4166: ЦРЕАТЕ ТАБЛЕ `вп_постс`( 4203: - Думпинг података за таблу` вп_постс` 4206: ЛОЦК ТАБЛЕС `вп_постс` ВРИТЕ; 4207: / *! 40000 АЛТЕР ТАБЕЛА` вп_постс` ДИСАБЛЕ КЕИС * /; 4208: ИНСЕРТ ИНТО `вп_постс`ВАЛУЕС( 1,2, '2006-09-11 05:07:23', '2006-09-11

Можете, наравно, једноставно ископирати излаз из греп-а у други фајл, овако:

греп кључна реч име датотеке.ткт & гт; оутпутфиле

У мом случају, то није хтело радити јер нисам могао да увезем резултирајућу резервну копију из неког разлога. Дакле, нашао сам другачији начин да извучем линије користећи сед, а ова метода је радила

сед -н '4160,4209п' ховтогеекдб0101140201.бак & гт; оутпутфиле

У суштини синтакса је оваква, тако да се користи -н аргумент и укључи "п" након броја друге линије

сед -н 'ФИРСТЛИНЕНУМБЕР, ЛАСТЛИНЕНУМБЕРп 'филенаме & гт; оутпутфиленаме

Неки други начини на које можете извући одређене линије у средини датотеке? Можете користити "главу""Командом са аргументом + број да бисте једноставно прочитали прве к линије датотеке, а затим користите реп за екстракцију тих линија.Није најбоља опција, пуно изнад главе.Једноставнија опција?Можете користити команду за поделу да бисте датотеку претворили у више датотека управо на жељеном броју линије, а затим извадите линије користећи главу или реп.

Или можете само користити сед.