Portál AbcLinuxu, 26. dubna 2024 02:07


Dotaz: Odstranenie riadku z textu

18.9.2010 23:02 check
Odstranenie riadku z textu
Přečteno: 259×
Odpovědět | Admin
Mam v jednom subore asi 10 000 riadkov, z toho 5 000 rovnakych ktore obsahuju len "true". Ako odstranit tieto riadky, na ktorych je len "true"? Cely ho odstranit. Dakujem.

Ř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

pitomeczech avatar 18.9.2010 23:22 pitomeczech | skóre: 3
Rozbalit Rozbalit vše Re: Odstranenie riadku z textu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nejjednoduší bude použít grep s false a přesměrovat je do nového souboru.
Řešení 1× (12345)
Jendа avatar 18.9.2010 23:46 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Odstranenie riadku z textu
On nepsal, že ostatní řádky obsahují jenom „false“. Takže grep na ^true$ a inverzní vzorek (parametr -v).
18.9.2010 23:26 Patrik Uhrak | skóre: 31 | blog: pato
Rozbalit Rozbalit vše Re: Odstranenie riadku z textu
Odpovědět | | Sbalit | Link | Blokovat | Admin

Zdravim, takto :

sed -i '/^true$/d' subor.txt     # mazu sa riady v povodnom subore vdaka prepinacu -i
sed '^true$/d' subor.txt > subor_upraveny.txt    # povodny subor ostava nedotknuty
18.9.2010 23:28 Patrik Uhrak | skóre: 31 | blog: pato
Rozbalit Rozbalit vše Re: Odstranenie riadku z textu

OPRAVA: V tom druhom pripade chyba lomitko, takze takto:

sed '/^true$/d' subor.txt > subor_upraveny.txt    # povodny subor ostava nedotknuty
19.9.2010 11:27 check
Rozbalit Rozbalit vše Re: Odstranenie riadku z textu
Dakujem, a ak je na riadku viac slov a vyskytuje sa tam slovo "true", ako odfiltrovat len tie riadky na ktorych je to slovo?
19.9.2010 21:08 Patrik Uhrak | skóre: 31 | blog: pato
Rozbalit Rozbalit vše Re: Odstranenie riadku z textu

Takto ti to pojde rychlejsie: http://www.grymoire.com/Unix/Sed.html

K tomu tvojmu poslednemu, vyzerat by to mohlo takto:

 sed '/\<true\>/d' subor.txt > subor_upraveny.txt      # pouzitim prepinaca -i, nie je nutne presmerovanie a upravuje sa povodny subor
Jendа avatar 18.9.2010 23:45 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Odstranenie riadku z textu
Odpovědět | | Sbalit | Link | Blokovat | Admin
grep -vE "^true$" soubor > nový_soubor
Já to s tou denacifikací Slovenska myslel vážně.
18.9.2010 23:49 pepazdepa
Rozbalit Rozbalit vše Re: Odstranenie riadku z textu
Odpovědět | | Sbalit | Link | Blokovat | Admin
neuveritelny, jak lidi neznaji unixove zaklady a ani neumi googlovat :)

tady pro emacs treba:

M-x flush-lines Prompt for a regexp, and delete each line that contains a match for it, operating on the text after point. This command deletes the current line if it contains a match starting after point. If the region is active, it operates on the region instead; if a line partially contained in the region contains a match entirely contained in the region, it is deleted.

If a match is split across lines, flush-lines deletes all those lines. It deletes the lines before starting to look for the next match; hence, it ignores a match starting on the same line at which another match ended.

pro vi:

:g/pattern/d
19.9.2010 08:58 Patrik Uhrak | skóre: 31 | blog: pato
Rozbalit Rozbalit vše Re: Odstranenie riadku z textu

Podla mojho nazoru nie je nutne a ani ziaduce aplikovat mazanie globalne v tej ukazke pre vi .

1. Ak bude v riadku viac true, tak sa mazat podla zadania nema.

2. Ak pouzijeme ^true$ , tak tam aj tak viac ako jeden nalez na riadok byt nemoze.

23.9.2010 21:24 pepazdepa
Rozbalit Rozbalit vše Re: Odstranenie riadku z textu
ma pravdu predseda :-)

:g/^pattern$/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.