Jak smazat znaky cr,lf



Na PC s Win 2000 vytvářím textové soubory, pomocí utility HEAD, stažené z   
membres.lycos.fr ...   
  
Výstupní soubor má ale na konci každého řádku 4 znaky: CR,LF,CR,LF a mezi řádky je tak zbytečná mezera.  
Hledám způsob, jak ve Windows ty 2 přebytečné znaky ( CR,LF ) odstranit. Hodil by se nějaký program  
typu "filtr", abych ho mohl použít v dávkovém souboru. Nemá někdo nějaký nápad ? Předem děkuji.
neni to v total commanderu v menu? jmenuje se to dos2unix, unix2dos. V unixovym shellu jednoznacne tr/sed/... ale v cmd.exe tezko radit.
<p>dlouhé řádky můžete rozdělit pomocí znaku <code>^</code>, pokud si pamatujete, že znak a nový řádek za ním jsou zcela odstraněny. takže, pokud by měl být mezera, kde prolomíte čáru, vložte mezeru. <em> ( <a href="https://stackoverflow.com/a/21000752/157247">více k tomu níže.</a> ) </em></p><p>příklad:</p><pre><code>copy file1.txt file2.txt </code></pre><p>bude psáno jako:</p><pre><code>copy file1.txt^ file2.txt </code></pre> <p>obecným případem, který pracuje s jakýmkoli příkazem, který píše do stdout, je použití <code>xargs</code>, které vám umožní připojit ke konci příkazu libovolný počet argumentů z příkazového řádku:</p><pre><code>$ find … | xargs grep 'search' </code></pre><p>nebo vložte příkaz do řádku <code>grep</code> pomocí backticks nebo <code>$()</code>, které příkaz spustí a nahradí jeho výstup:</p><pre><code>$ grep 'search' $(find …) </code></pre><p>tyto příkazy nefungují, pokud názvy souborů obsahují mezeru nebo určité jiné „divné znaky“ (<code>\'"</code> pro xargs, <code>\[*?</code> pro <code>$(find …)</code>).</p><hr><p>ve specifickém případě <code>find</code> je však zabudována schopnost provádět program na zadaných argumentech:</p><pre><code>$ find … -exec grep 'search' {} \; </code></pre><p>všechno mezi <code>-exec</code> a <code>;</code> je příkaz k provedení; <code>{}</code> je nahrazen názvem souboru nalezeným <code>find</code>. tím se provede samostatný <code>grep</code> pro každý soubor; protože <code>grep</code> může mít mnoho názvů souborů a prohledávat je všechny, můžete změnit <code>;</code> na <code>+</code>, abyste zjistili, že všechny odpovídající názvy souborů předáte <code>grep</code> na jednou:</p><pre><code>$ find … -exec grep 'search' {} \+ </code></pre> <p>v c++ existují tři <em> odlišné </em> typy znaků:</p><ul> <li><code>char</code>name\_\_</li> <li><code>signed char</code></li> <li><code>unsigned char</code></li> </ul><p>pokud používáte textové znaky pro text <em> </em>, použijte nekvalifikovaný <code>char</code>name\_\_:</p><ul> <li>je to typ znakových literálů jako <code>'a'</code> nebo <code>'0'</code>.</li> <li>je to typ, který tvoří řetězce c jako <code>"abcde"</code></li> </ul><p>funguje také jako číselná hodnota, ale není specifikováno, zda je s touto hodnotou zacházeno jako s podepsanou nebo nepodepsanou hodnotou. dávejte si pozor na porovnání postav prostřednictvím nerovností - i když pokud se omezíte na ascii (0-127), jste jen v bezpečí.</p><p>pokud používáte typy znaků jako <em> čísla </em>, použijte:</p><ul> <li><code>signed char</code>, což vám dává <em> alespoň </em> rozsah -127 až 127. (-128 až 127 je běžné)</li> <li><code>unsigned char</code>, což vám dává <em> alespoň </em> rozsah 0 až 255.</li> </ul><p>„alespoň“, protože standard c++ poskytuje pouze minimální rozsah hodnot, které musí každý číselný typ pokrýt. <code>sizeof (char)</code> musí být 1 (tj. jeden byte), ale byte by teoreticky mohl být například 32 bitů. <strong><code>sizeof</code>name\_\_ by i nadále vykazoval svou velikost jako <code>1</code></strong> - což znamená, že <em> můžete </em> mít <code>sizeof (char) == sizeof (long) == 1</code>.</p> <p>jedním ze způsobů je použití <code>cut</code>:</p><pre><code> command | cut -c1-8 </code></pre><p>tím získáte prvních 8 znaků z každého řádku výstupu. protože <code>cut</code> je součástí posixu, bude pravděpodobně na většině unices.</p> pokud se při výpočtu objeví následující chybová hláška: je třeba nainstalovat patch knihoven systému mfc8. link ke stažení: http://www.microsoft.com/downloads/details.aspx?familyid=766a6af7-ec73-40ff-b072-9112bab119c2&displaylang=en K dispozici je celá řada možností pro kontrolu této.


-MD zobrazí seznam souborů, -MMD vypíše non-systémové soubory jako vedlejší účinky kompilace


-M, -mm bude generovat seznamy namísto kompilace.


-MQ, -MG, -MP a -MT generování makefile cílových fragmentů. -mf umožňuje zadat jméno výstupního souboru. <p>měli byste zvážit formát iso 8601 (2013-04-01t13: 01: 02). ano, existují normy pro tyto věci. dvojtečky a spojovníky mohou být vynechány.</p><p>řetězec formátu, který obvykle používám, je <code>%y%m%dt%h%m%s</code> a přináší 20130401t130102. v závislosti na požadavcích vynechávám hodnoty zleva. v bash skriptu dostanu datum s řádkem jako:</p><pre><code>logdate=$(date +%y%m%dt%h%m%s) </code></pre> <p>pomocí <a href="http://www.php.net/wordwrap">wordwrap</a> funkce. rozděluje texty do více řádků tak, že maximální šířka je ta, kterou jste zadali, a rozbíjí se na hranicích wordu. po rozdělení jednoduše vezmete první řádek:</p><pre><code>substr($string, 0, strpos(wordwrap($string, $your\_desired\_width), "\n")); </code></pre><p>jedna věc, kterou tento oneliner neřeší, je případ, kdy samotný text je kratší než požadovaná šířka. pro zvládnutí tohoto případu by měl člověk udělat něco jako:</p><pre><code>if (strlen($string) &gt; $your\_desired\_width) { $string = wordwrap($string, $your\_desired\_width); $string = substr($string, 0, strpos($string, "\n")); } </code></pre><hr><p>výše uvedené řešení má problém předčasného řezání textu, pokud obsahuje nový řádek před aktuálním bodem řezu. zde je verze, která tento problém řeší:</p><pre><code>function tokentruncate($string, $your\_desired\_width) { $parts = preg\_split('/([\s\n\r]+)/', $string, null, preg\_split\_delim\_capture); $parts\_count = count($parts); $length = 0; $last\_part = 0; for (; $last\_part &lt; $parts\_count; ++$last\_part) { $length += strlen($parts[$last\_part]); if ($length &gt; $your\_desired\_width) { break; } } return implode(array\_slice($parts, 0, $last\_part)); } </code></pre><p>také zde je testovací třída phpunit používaná k testování implementace:</p><pre><code>class tokentruncatetest extends phpunit\_framework\_testcase { public function testbasic() { $this-&gt;assertequals("1 3 5 7 9 ", tokentruncate("1 3 5 7 9 11 14", 10)); } public function testemptystring() { $this-&gt;assertequals("", tokentruncate("", 10)); } public function testshortstring() { $this-&gt;assertequals("1 3", tokentruncate("1 3", 10)); } public function teststringtoolong() { $this-&gt;assertequals("", tokentruncate("toooooooooooolooooong", 10)); } public function testcontainingnewline() { $this-&gt;assertequals("1 3\n5 7 9 ", tokentruncate("1 3\n5 7 9 11 14", 10)); } } </code></pre><h1><strong>upravit :</strong></h1><p>speciální znaky utf8 jako 'à' nejsou zpracovány. přidat 'u' na konci regexu pro zpracování:</p><p><code>$parts = preg\_split('/([\s\n\r]+)/u', $string, null, preg\_split\_delim\_capture);</code></p> <p>tyhle jsou trochu staré, ale byly vysoké v žebříčku google, takže jsem si myslel, že bych hodil odpověď, kterou jsem našel <a href="https://stackoverflow.com/questions/8588818/chrome-pdf-display-duplicate-headers-received-from-the-server-fixed">chrome, pdf displej, duplicitní záhlaví přijaté ze serveru</a> </p><p>můj problém byl také v tom, že název souboru obsahoval čárky. vyměňte čárky za jejich odstranění a měli byste být v pořádku. moje funkce pro vytvoření platného názvu souboru je níže.</p><pre><code> public static string makevalidfilename(string name) { string invalidchars = regex.escape(new string(system.io.path.getinvalidfilenamechars())); string invalidrestr = string.format(@"[{0}]+", invalidchars); string replace = regex.replace(name, invalidrestr, "\_").replace(";", "").replace(",", ""); return replace; } </code></pre> <p>zvažte vytvoření <a href="http://www.alistapart.com/articles/goingtoprint/">list stylů pro tisková média</a> , který využívá místo ohraničení buněk a barvy pozadí vlastnost ohraničení tabulky - při tisku by se mělo vytvořit viditelné ohraničení:</p><pre><code>table { border:solid #000 !important; border-width:1px 0 0 1px !important; } th, td { border:solid #000 !important; border-width:0 1px 1px 0 !important; } </code></pre>