Portál AbcLinuxu, 27. října 2025 17:41
grafika\2003\Fotoarchiv grafika\2003\Fotoarchiv\akce grafika\2003\Fotoarchiv\akce\03-11-13_praha
#!/usr/bin/perl
while(<>){
chomp; @F=split/\\/; s/'/\\'/g for @F; $f=pop@F;
$e=@F?'$h{\''.join('\'}{\'',@F).'\'}':'$h';
$e.="={\'$f\'=>1}";
eval$e;
}
sub p{
while(($k,$v)=each %{$_[0]}){
print "$k\\";
if(ref$v) { p($v) } else { print "\n" };
}
}
p(\%h)
2007\Akce 2007\Akce\2007 2007\Akce\2007\pozvanky 2007\Akce\2007\pozvanky\English 2007\Akce\2007\DIPLOMY 2007\Akce\2007\DIPLOMY\bodyfitness 2007\Akce\2007\DIPLOMY\fitness 2007\Akce\2007\bannery 2007\Akce\2007\bannery\molo 2007\Akce\2007\bannery\vchodale dostal jsem misto ocekavaneho
2007\Akce\2007\pozvanky\English 2007\Akce\2007\DIPLOMY\bodyfitness 2007\Akce\2007\DIPLOMY\fitness 2007\Akce\2007\bannery\molo 2007\Akce\2007\bannery\vchodpouze toto:
2007\Akce\2007\bannery\vchod\
# -*- coding: utf-8 -*-
radky = r"""2007\Akce
2007\Akce\2007
2007\Akce\2007\pozvanky
2007\Akce\2007\pozvanky\English
2007\Akce\2007\DIPLOMY
2007\Akce\2007\DIPLOMY\bodyfitness
2007\Akce\2007\DIPLOMY\fitness
2007\Akce\2007\bannery
2007\Akce\2007\bannery\molo
2007\Akce\2007\bannery\vchod"""
seznam=[]
for radek in radky.split("\n"):
for i in range(len(seznam)):
if seznam[i] in radek:
seznam[i] = radek
break
else:
seznam.append(radek)
for radek in seznam:
print radek
Práce se soubory: http://www.py.cz/PraceSeSoubory
my $last = '';
for (sort { $b cmp $a } map { chomp; $_ } <>) {
print $last = $_, "\n"
if index $last, $_;
}
sort vstup.txt | gawk -f dupl.awk
kde dupl.awk vypadá takhle:
BEGIN {
predchozi="";
}
{
if (substr($0,1,length(predchozi))!=predchozi) {
print predchozi;
}
predchozi=$0;
}
END {
print predchozi;
}
sed -n 'H
g
s/^\(.*\)\n\1.*//
s/\n.*//p
g
$s/^\(.*\)\n\1.*//
$s/.*\n//p
s/.*\n//
h' subor.in
(Ak to chce niekto ako one-liner, tak tu:
sed -n 'H; g; s/^\(.*\)\n\1.*//; s/\n.*//p; g; $s/^\(.*\)\n\1.*//; $s/.*\n//p; s/.*\n//; h')
alebo skript v bashi (ktory je ideovo rovnaky):
#!/bin/bash
while read line; do
[[ "$line" =~ "$prev".* ]] ||
echo "$prev"
oldprev="$prev"
prev="$line"
done
[[ "$prev" =~ "$oldprev".* ]] ||
echo "$prev"
a volanie:
skript < subor.in
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.