Główna » jak » Jak usunąć linie pośrodku pliku za pomocą terminala linuksowego

    Jak usunąć linie pośrodku pliku za pomocą terminala linuksowego

    Gdy zarządzasz swoimi serwerami, jedną z rzeczy, które musisz regularnie wykonywać, jest wydobywanie danych z pliku. Może jest to plik dziennika, lub potrzebujesz dodatkowej tabeli ze środka pliku kopii zapasowej MySQL, tak jak ja.

    Aby obliczyć numery linii, wykonano proste polecenie grep -n (argument -n podaje numery linii). Ułatwiło to ustalenie, co muszę wydobyć.

    grep -n wp_posts howtogeekdb010114.bak | więcej

    Wyniki w coś podobnego, pokazujące numery linii po lewej stronie wyjścia. Doprowadzenie wszystkiego do "więcej" sprawia, że ​​pierwsza linia jest widoczna bez przewijania. Teraz masz numer linii na początek i prawdopodobnie na końcu.

    4160: - Struktura tabeli dla tabeli "wp_posts" 4163: DROP TABLE IF IF EXISTS "wp_posts"; 4166: CREATE TABLE 'wp_posts' (4203: - Dumping danych dla tabeli 'wp_posts' 4206: LOCK TABLES 'wp_posts' WRITE; 4207: / *! 40000 ALTER TABLE 'wp_posts' WYŁĄCZ KLAWISY * /; 4208: INSERT INTO 'wp_posts "WARTOŚCI (1,2," 2006-09-11 05:07:23 "," 2006-09-11

    Można oczywiście po prostu przesłać dane wyjściowe z grep do innego pliku, na przykład:

    grep słowo kluczowe nazwa_pliku.txt> plik_wyjściowy

    W moim przypadku to nie chciało działać, ponieważ z jakiegoś powodu nie mogłem zaimportować wynikowej kopii zapasowej. Tak więc znalazłem inny sposób wyodrębniania linii za pomocą sed i ta metoda zadziałała.

    sed -n '4160,4209p' howtogeekdb0101140201.bak> plik wynikowy

    Zasadniczo składnia jest taka, upewnij się, że używasz argumentu -n i dołączasz "p" po drugim numerze linii.

    sed -n 'FIRSTLINENUMBER, LASTLINENUMBERp' filename> outputfilename

    Niektóre inne sposoby na wyciągnięcie określonych linii w środku pliku? Możesz użyć polecenia "head" z argumentem liczby +, aby odczytać pierwsze x wierszy pliku, a następnie użyć komendy tail, aby wyodrębnić te linie. Nie najlepsza opcja, dużo kosztów ogólnych. Prostsza opcja? Możesz użyć polecenia split, aby przekształcić plik w wiele plików bezpośrednio na żądany numer linii, a następnie wyodrębnić wiersze za pomocą głowy lub ogona.

    Lub możesz po prostu użyć sed.