Poszukuję skryptu bash lub sed (najlepiej jednolinijkowego), za pomocą którego mogę wstawić znak nowego wiersza po ustalonej liczbie znaków w ogromnym pliku tekstowym.Jak wstawić znak nowego wiersza po ustalonej liczbie znaków w pliku
Odpowiedz
Co powiesz na coś takiego? Zmiana 20 jest liczba znaków przed linią, a temp.text jest plik do zastąpienia w ..
sed -e "s/.\{20\}/&\n/g" < temp.txt
Przerywa, jeśli plik zawiera znak "~" –
Wprowadza znak nowej linii po * co * 20 znaków (w wierszu oryginału). Jeśli oryginał nie zawiera żadnych znaków nowej linii i chcesz znak nowej linii tylko po pierwszych 20 znakach, pomiń "g" (globalny) na końcu. Jeśli chcesz, a oryginał zawiera znaki nowej linii, musisz użyć innego rozwiązania. –
Miałem ten sam problem, ale w OSX wstawia "n", a nie linię podziału? Sprawdziłem inne posty z tym samym problemem, ale nie mogłem zrozumieć, jak to naprawić? Ktoś proszę? – JM88
jeśli oznaczać chcesz wstawić znak nowej linii po określonej liczbie znaków w odniesieniu do całego pliku np po 30 znaków w całym pliku
gawk 'BEGIN{ FS=""; ch=30}
{
for(i=1;i<=NF;i++){
c+=1
if (c==ch){
print ""
c=0
}else{
printf $i
}
}
print ""
}' file
jeśli myśli wstawić na określoną liczbę znaków w każdej linii np po każdym 5th charakteru
gawk 'BEGIN{ FS=""; ch=5}
{
print substr($0,1,ch) "\n" substr($0,ch)
}' file
Dopisz się wykluczałaby y linia po wierszu z dokładnie 42 znakami
sed -ie '/^.\{42\}$/a\
' huge_text_file
Niech N będzie zmienną powłoki reprezentującą liczbę znaków, po której ma się pojawić znak nowej linii. Jeśli chcesz kontynuować liczenie według linii:
perl -0xff -pe 's/(.{'$N'})/$1\n/sg' input
Jeśli chcesz ponownie rozpocząć liczenie dla każdej linii, pomiń argument -0xff.
To może pracować dla Ciebie:
echo aaaaaaaaaaaaaaaaaaaax | sed 's/./&\n/20'
aaaaaaaaaaaaaaaaaaaa
x
dosłownie działa tylko dla pierwszej linii (np. Wstawia znak nowej linii po 20 znakach, a następnie kończy działanie). Nie nadaje się do "dużego pliku tekstowego". – michael
Oto rozwiązanie POSIX:
awk '{gsub(/.{5}/,"&\n")}1' file
Lub:
fold -w5 file
Wejście:
banana strawberry grape
wyjściowa:
banan
a str
awber
ry gr
ape
ciekawe rozwiązanie awk bardziej wydajnych niż krotnie.
Widziałem to wypróbowane dziesiątki różnych sposobów, ale zawsze są specjalne przypadki, różnice wersji, inne problemy, lub rozwiązanie jest po prostu nieeleganckie. 'fold' to * zdecydowanie * odpowiednie narzędzie do tego. +1 – laindir
'fold' powinno być właściwą odpowiedzią. 'man fold' daje' wrap każdej linii wejściowej do dopasowania w określonej szerokości'. Idealnie odpowiada na pytanie! – dcousens
Niestety, 'fold' nie obsługuje niczego innego niż zwykłych plików ascii, niestety - po prostu spróbuj przetestować na dowolnym pliku Unicode (np. Ze specjalnymi cudzysłowami w unikodzie, itp.), Robi bałagan rzeczy. Jednak 'awk..gsub' działa. – michael
- 1. Znak nowego wiersza w C#
- 2. Usunięcie znak nowego wiersza na końcu pliku
- 3. Jak dopasować znak nowego wiersza w nieprzetworzonym łańcuchu Python
- 4. Jak wstawić spację po określonej liczbie znaków w ciągu znaków przy użyciu Pythona?
- 5. Jak ustawić warunkowy znak nowego wiersza w PS1?
- 6. Jak mogę napisać znak nowego wiersza w ColdFusion?
- 7. Potrzebuję podzielić ciąg w bashu po określonej liczbie znaków
- 8. Jak wstawić znak nowej linii po przecinku w `), (` z
- 9. Jak napisać natywny znak nowego wiersza do deskryptora pliku w języku Python?
- 10. Jak dodać znak w określonej lokalizacji w ciągu znaków?
- 11. Dołączanie nowego wiersza do pliku (pliku dziennika) w języku C++
- 12. Jak korzystać z nowego wiersza w ToolTip
- 13. Jak wstawić n znaków w Pythonie
- 14. usunąć znaki nowego wiersza z pliku txt za pomocą php
- 15. Jak wstawić znak escape (NIE "escaped" znak) w regex Ruby?
- 16. Polecenie unix do wstawiania zastępczego wszystkich znaków nowego wiersza w pliku <br> \ n
- 17. Jak wstawić znak nowej linii po każdych 80 znakach w vim?
- 18. Dodawanie nowego wiersza z PHPExcel?
- 19. Spójrz na każdy znak w ciągu znaków.
- 20. Jak podzielić ciąg znaków na spację po określonej liczbie znaków w javascript?
- 21. Jak wstawić podział wiersza w StringVar w Crystal Reports
- 22. Jak mogę napisać znak procentu (%) na początku wiersza w HAML?
- 23. Jquery - Jak wstawić znak na dane wejściowe?
- 24. Python argparse: Jak wstawić znak nowej linii pomocy w akapicie?
- 25. (Swift) jak wydrukować znak "\" w ciągu znaków?
- 26. Zastąpić nowego wiersza pytona
- 27. Jak wstawić wiele białych znaków w Perlu?
- 28. Jak wstawić wszystkie liczby w ciągu znaków
- 29. Regex zamień wszystkie znaki nowego wiersza przecinkiem
- 30. Jak czytać z pliku tekstowego, znak po znaku w C++
Dupek z http://stackoverflow.com/questions/525592/find-and-replace-inside-a-text-file-from--bash-command wśród wielu, wielu innych –
Nie zgadzam się z komentarzem dupe tutaj, Neil: to nie jest proste wyszukiwanie i zamiana, jak pytanie w twoim linku. – Kristian