Како уклонити линије из средине датотеке користећи Линук терминал
Када управљате сопственим серверима, једна од ствари које ћете морати да урадите полу-редовно је да извлачите ствари из средине датотеке. Можда је то лог фајл, или морате да додате још једну таблицу из средине ваше МиСКЛ резервне датотеке, као што сам и ја урадио.
Да би одредили бројеве редова, једноставна греп -н наредба је обавила посао (аргумент -н даје бројеве редова). Због тога је било лако схватити шта ми је потребно да извучем.
греп -н вп_постс ховтогеекдб010114.бак | више
Резултат је нешто слично овоме, које показује бројеве редова изнад на левој страни излаза. Пипинг све у “више” осигурава да можете видјети прву линију без да се она помиче. Сада имате број линије за почетак, и вероватно онај са којим ћете завршити.
4160: - Структура табеле за табелу 'вп_постс' 4163: ДРОП ТАБЛЕ ИФ ЕКСИСТС 'вп_постс'; 4166: ЦРЕАТЕ ТАБЛЕ 'вп_постс' (4203: - Подаци о дампингу за табелу 'вп_постс' 4206: ЛОЦК ТАБЛИЦЕ 'вп_постс' ВРИТЕ; 4207: / *! 40000 АЛТЕР ТАБЛЕ 'вп_постс' ДИСАБЛЕ КЕИС * /; 'ВАЛУЕС (1,2,' 2006-09-11 05:07:23 ',' 2006-09-11
Могли бисте, наравно, само извући излаз из греп-а у другу датотеку, на овај начин:
греп кључна реч филенаме.ткт> оутпутфиле
У мом случају, то није желело да ради, јер из неког разлога нисам могао да увезем резултујућу резервну копију. Дакле, нашао сам другачији начин да извадим линије користећи сед, и овај метод је радио.
сед -н '4160,4209п' ховтогеекдб0101140201.бак> оутпутфиле
У основи, синтакса је оваква, пазећи да користите -н аргумент, и укључите “п” иза другог броја линије.
сед -н 'ФИРСТЛИНЕНУМБЕР, ЛАСТЛИНЕНУМБЕРп' филенаме> оутпутфиленаме
Неки други начини на које можете извући одређене линије у средини датотеке? Можете користити команду "хеад" са аргументом + број да бисте само прочитали прве к линије датотеке, а затим користите реп да бисте извукли те линије. Не најбоља опција, много надземних. Једноставнија опција? Можете користити команду сплит да бисте датотеку претворили у више датотека право на жељени број линије, а затим издвојили линије помоћу главе или репа.
Или можете користити сед.