GNU sed - najít nebo výměna mezery a nové řádky. Proč je to nefunguje? v3.02 vs v4.2

hlasů
2
C:\crp\cnp>sed -V

GNU sed version 3.02

Copyright (C) 1998 Free Software Foundation, Inc.......


C:\crp\cnp>type f.f

a a a

a a a

Snaží nahradit ‚a‘ s mezerami.

C:\crp\cnp>type f.f | sed -e s/a/\d032/g

d032 d032 d032

d032 d032 d032

proč je to tak funguje?

Nevadí mi, jestli jsem najít nebo nahrazení mezer a nových řádků .. Já jen chci, aby bylo možné je určit. To se nezdá být pracovní a já nevím proč.

(Výměna mezery nebo prostor, s f, nefunguje)

C:\crp\cnp>echo a a | sed s/\d32/f/
a a

Poznámka- zdá se, že to bude fungovat v 4.2, ale já jsem zájem o 3,02 ‚cos to je verze dodáván s unxutils http://unxutils.sourceforge.net/

Aktualizace question- poděkování za špičkou paxdiablo je .. o gnu32win, jsem nyní používají, aby místo unxutils. To je více aktuální. Nyní můžete zadat mezery. A špička ghostdog a paxdiablo vidím kolem uvozovek. Jsem v pořádku s uvedením míst s \ d (jelikož za použití 4.2) nebo mezerou. Ale já stále nedaří odstranit nové linky

C: \ CRP> typ ff | sed -e s / \ r \ n / f / g

Aa

b bb

c cc

C: \ CRP> typ ff | sed -e s / \ d013 \ D010 / f / g

Aa

b bb

c cc

C: \ CRP> typ ff | sed -e s / \ x0D \ x0A / f / g

Aa

b bb

c cc

Položena 26/07/2010 v 02:46
zdroj uživatelem
V jiných jazycích...                            


3 odpovědí

hlasů
5

Proč ne jen pomocí mezeru sám spíše než nějaké legrační kódování? Jako v:

sed -e 's/a/ /g'

Za to, co stojí za to je příkaz, který dal také nefunguje v 4.2.1, ale pokud přidáte do uvozovek, to dělá práci. Takže navrhuji, abyste jej změnit na:

sed -e 's/a/\d032/g'

Omlouvám se, právě jsem si všiml, že jste se systémem Windows, takže jste asi dostali Cygwin nebo GnuWin32 (nebo ekvivalent).

Citace fungovat odlišně v systému Windows, takže byste měli vyzkoušet dvě věci. Prvním z nich je použít "namísto 'uvozovek:

sed -e "s/a/ /g"

V opačném případě je znak escape ve Windows je ^to něco takového by měl být schopen uniknout prostor:

sed -e s/a/^ /g

Jako stranou, já bych se snaží přejít na GnuWin32, pokud je to možné, což je novější verze sed(například). To nevypadá jako UnxUtils má aktualizace od roku 2003 založen na této webové stránce odkaz. Můžete získat jednotlivé balíky ze zde . Hledáte coreutils, který obsahuje převážnou část UNIX zpracování textu toolkit.

Ale pokud nevíte jak dál s UnxUtils, tak bych prostě použít skutečný prostor spíše než desítkové kódu, a pak bych použít tr, jak se zbavit nových linek:

tr -d "\n"

samozřejmě za předpokladu, že trv textutilszvládne že syntaxe :-)

Odpovězeno 26/07/2010 v 02:49
zdroj uživatelem

hlasů
2

Zůstal jsem ve stejném problému na Win XP a uvozovky nefungovalo při pokusu o tisk nového řádku „\ n“. Řešením bylo použít nový UnxUpdates.zip z http://unxutils.sourceforge.net/ Funguje korektně „\ n“.

Sed verze uvádí: GNU sed version 4.0.7

Odpovězeno 12/12/2012 v 11:56
zdroj uživatelem

hlasů
0

Na oknech, použijte uvozovky

sed "s/a/\d032/g" file

nebo prostě

sed "s/a/ /g" file
Odpovězeno 26/07/2010 v 03:02
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more