Mam duży plik i muszę podzielić na dwa pliki. Załóżmy, że w pierwszym pliku należy wybrać 1000 linii i umieścić je w innym pliku oraz usunąć te linie w pierwszym pliku.
Próbowałem użyć, split
ale tworzy wiele fragmentów.
text-processing
awk
split
csplit
Aravind
źródło
źródło
split --help
?Odpowiedzi:
Najłatwiejszym sposobem jest prawdopodobnie użycie
head
itail
:Że wprowadzi pierwsze 1000 wierszy z
input-file
INTOoutput1
oraz wszystkie linie od 1001 do końca woutput2
źródło
Myślę, że
split
to najlepsze podejście.Spróbuj użyć
-l xxxx
opcji, gdzie xxxx to liczba linii, które chcesz w każdym pliku (domyślnie jest to 1000).Możesz użyć tej
-n yy
opcji, jeśli bardziej martwi Cię liczba utworzonych plików. Użyj-n 2
podzieli twój plik na tylko 2 części, bez względu na ilość linii w każdym pliku.Możesz policzyć liczbę linii w swoim pliku
wc -l filename
. Jest to polecenie „wordcount” z opcją linii.Bibliografia
man split
man wc
źródło
split -l 1000 bigfile && mv xaa piece1 && cat x?? > piece2 && rm x??
.To jest praca dla
csplit
:s
rozłoży się iluzorycznieinfile
, pierwszy kawałekxx00
- do linii 1001, ale bez niej, a drugi kawałekxx01
- pozostałe linie.Możesz grać z opcjami, jeśli potrzebujesz różnych nazw plików wyjściowych, np. Używając
-f
i określając prefiks :tworzy dwa pliki o nazwie
piece.00
ipiece.01
Za pomocą smarta
head
możesz także zrobić coś takiego:źródło
csplit
. Bardzo dobrze. (Właśnie czytam listę poleceń POSIX i na początku miałem ogromne problemy z owinięciem głowy wokół celucsplit
polecenia. Okazuje się, że to naprawdę bardzo proste.) :)Prosty sposób na zrobienie tego, o co pyta jedno pytanie:
lub dla tych z was, którzy naprawdę nie znoszą pisać długich, intuicyjnie zrozumiałych poleceń,
źródło