Portál AbcLinuxu, 12. května 2025 06:25

Dotaz: Odstraneni \n, ale zachovani \n\n

12.4.2011 22:40 Jiri Vratny
Odstraneni \n, ale zachovani \n\n
Přečteno: 351×
Odpovědět | Admin
Zdravim,

prevadim PDF do TXT, a prevadece zalamuji radky tam, kde byly zalomene v PDF. Rad bych tyto radky "narovnal" (tj. odstranil "\n"), ale zaroven chci zachovat odstavce (tj. neodstranit "\n\n").

Jak na to? Sed-uju, tr-uju,... tajak uj, a ono \ne a \ne a \ne.

Diky za Vasi radu a trpelivost :)

Jirka


Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

12.4.2011 23:09 VM
Rozbalit Rozbalit vše Re: Odstraneni \n, ale zachovani \n\n
Odpovědět | | Sbalit | Link | Blokovat | Admin
Viděl bych to na krátký program/skript třeba v Perlu. Na konci neprázdného řádku se "\n" odstraní a program si to zapamatuje, na konci prázdného se zachová, a pokud předchozí řádek byl neprázdný, tak se tam jedno "\n" vrátí.
Řešení 1× (a1bert)
12.4.2011 23:19 ---
Rozbalit Rozbalit vše Re: Odstraneni \n, ale zachovani \n\n
Odpovědět | | Sbalit | Link | Blokovat | Admin
Neslo by pouzit toto? 1. Zmen \n\n na magic_sequence 2. Vymaz \n 3. Zmen magic_sequence na \n\n
12.4.2011 23:42 Sten
Rozbalit Rozbalit vše Re: Odstraneni \n, ale zachovani \n\n
Odpovědět | | Sbalit | Link | Blokovat | Admin
Regulárním výrazem: ([^\n])\n([^\n]) => \1\2
12.4.2011 23:57 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Odstraneni \n, ale zachovani \n\n
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nemám šajn co jsem to napsal, ale cosi to dělá.
sed ':a;N;$!ba;s/\([^\n]\)\n\([^\n]\)/\1\2/g' files

Tady už trochu vím co jsem napsal:
awk '{if ($0 == "") printf "\n"; printf "%s", $0 }' smaz files
nebo něco jako:
awk '{if (($0 == "")&&(n == 0)) { printf "\n"; n=1; }else{ n=0; } printf "%s", $0 }' files

Případně ty '\n' zdvojit - vloží prázdný řádek.
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
13.4.2011 09:09 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Odstraneni \n, ale zachovani \n\n
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pokud můžete použít regulární výraz s vyhlížením (jsou např. v Perlu), můžete jedním výrazem rovnou unajít všechna \n, za kterými nenásleduje další \n:
\n(?<=\n)
13.4.2011 12:07 Sten
Rozbalit Rozbalit vše Re: Odstraneni \n, ale zachovani \n\n
To ale najde i \n na konci \n\n
13.4.2011 12:12 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Odstraneni \n, ale zachovani \n\n
Ano, pochopil jsem to tak, že chce \n zrušit a \n\n nahradit za \n. Pokud chce \n\n ponechat, stačí drobná úprava:
(?<!\n)\n(?!\n)
Teď koukám, že v předchozím komentáři jsem to měl špatně, mělo to být:
\n(?!\n)
13.4.2011 20:29 cronin | skóre: 49
Rozbalit Rozbalit vše Re: Odstraneni \n, ale zachovani \n\n
Ano, ano, v tom je krasa regularnych vyrazov (a Perlu, je nutne dodat): nikdy sa to nepodari na prvykrat, ... zvycajne sa to poniekolkych iteraciach pokusov a omylov dosolicha do stavu, kedy to funguje, ale vtedy tomu uz nikto nerozumie. :-D

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.