Połącz wiele plików tekstowych w jeden plik


10

Korzystam z prpolecenia unix, aby połączyć wiele plików tekstowych w jeden plik tekstowy:

pr -F *files > newfile

Każdy plik ma inną długość, inną liczbę wierszy. Jestem bardzo zadowolony z wyniku, podoba mi się, że zawiera on nazwę oryginalnego pliku tekstowego, a po nim zawartość tego pliku. Chciałbym jednak wyeliminować puste linie między nazwą oryginalnego pliku tekstowego a jego zawartością. Chcę tylko puste linie między różnymi plikami tekstowymi, aby je rozdzielić. Ponadto drukuje znak ^Lpo zawartości każdego pliku tekstowego i chciałbym go wyeliminować.

Każdy wczytany plik ma również numer „strony”. Tylko jeden plik jest dłuższy niż domyślny wiersz 66. ten plik zostaje ostatecznie podzielony na 2 „strony” i jest podzielony na 2 sekcje podzielone pustymi liniami. Czy możliwe jest ciągłe wpisywanie tego tekstu bez podziału?

Dziękuję za wszelką pomoc!

Odpowiedzi:


9

Możesz użyć narzędzia AWK:

awk 'FNR==1{print ""}{print}' *files > newfile

Źródło: /programming/1653063/how-do-i-include-a-blank-line-between-files-im-concatenating-with-cat


dziękuję za sugestię. jednak -T nie jest rozpoznawany. pracuję na Mac OS X, jeśli to ma znaczenie.
— Janet

niestety, -t tworzy ten sam typ pliku, co plik cat, bez przerwy między wczytywanymi plikami tekstowymi.
— Janet

dziękuję Radu. to prawie daje mi to, czego chcę! przepraszam, zdaję sobie sprawę, że teraz publikuję w niewłaściwym miejscu, ponieważ widzę powiadomienie o byciu nie na temat. dziękuję ci za pomoc!
— Janet

12

Aby mieć puste wiersze między plikami:

cat file1 newline file2 newline file3 > newfile

Gdzie „nowa linia” to plik z pustą linią.


Czy możesz wyjaśnić, jak utworzyć plik newline? Niektóre edytory tekstu automatycznie dodają znak końca linii do ostatniej linii, a inne nie, więc niektóre osoby mogą mieć problemy z poprawnym utworzeniem tego pliku. Innymi słowy: czy plik o zerowej długości ma zero linii, czy jedną linię?
— Eliah Kagan

vim nowa linia w vim: wq To wszystko.
— Darius Žitkevičius

Tak długo, jak widzę, „cat” automatycznie umieszcza nową linię między każdym plikiem.
— myuce

1
for file in *.txt; do (cat "${file}"; echo) >> concatenated.txt; done

Powyższe doda zawartość pliku eacb txt do concatenated.txt, dodając między nimi nową linię.


0

Możesz użyć catdo zrzucenia tekstu plików do jednego pliku za pomocą:

cat file1 file2 file3 > newfile

2
Niestety catnie spełnia innych wymagań.
— Ignacio Vazquez-Abrams,

1
tak dziękuję. ale cat po prostu wyświetla zawartość każdego pliku bez oryginalnej nazwy pliku tekstowego, a także wyświetla zawartość każdego pliku jeden po drugim, bez przerw między nimi. Potrzebuję co najmniej 1 pustej linii między zawartością każdego pliku tekstowego w nowym jednym dużym pliku.
— Janet
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.