trideni textoveho souboru

Honza Pazdziora adelton na fi.muni.cz
Čtvrtek Červen 8 14:14:01 CEST 2000


On 8 Jun 2000 12:37:36 +0200, jsvec na sitel.cz <jsvec na sitel.cz> wrote:

> Mam asi 40 MB velky textovy soubor, ve kterem je velke mnozstvi radku se
> stejnou strukturou, napr:
> 4545454	111	013201032103210321	3212
> 4545		456	4654876543221		1548
> 1213212	154	448657687		1233
> atd...
> Problem je v tom, ze nektere radky se v souboru vyskytuji nekolikrat (a
> nejsou bezprostredne za sebou) a ja je potrebuji odstranit (proste kazda
> radka by mela byt v souboru jenom jednou). Vim, ze Linux obsahuje silne
> nastroje pro praci s textem, tak me napadlo udelat to v nem. Bohuzel se
> Linuxu nevenuji prilis dlouho a nevim co s tim. 

Pokud nechcete/nemuzete menit poradi tech radku, takze byste mohl
pouzit uz zminete

	sort | uniq

tak se da vyuzit awk nebo perl, zde zkusime perl:

	#!/usr/bin/perl -n
	print unless exists $hash{$_};
	$hash{$_} = 1;
	__END__

pripadne pokud hrozi nebezpeci, ze na jednom radku jsou tabelatory a
na druhem mezery, tak normalizovat

	#!/usr/bin/perl -n
	my $norm = $_;
	$norm =~ s/\s+/ /g;
	print unless exists $hash{$norm};
	$hash{$norm} = 1;
	__END__

-- 
------------------------------------------------------------------------
 Honza Pazdziora | adelton na fi.muni.cz | http://www.fi.muni.cz/~adelton/
   .project: Perl, DBI, Oracle, MySQL, auth. WWW servers, MTB, Spain.
------------------------------------------------------------------------


Další informace o konferenci Linux