Portál AbcLinuxu, 10. května 2025 16:33

Dotaz: Jak najít nejdelší řádek

30.4.2013 22:50 Norman
Jak najít nejdelší řádek
Přečteno: 386×
Odpovědět | Admin
chci se zeptat, jak pomocí terminálu můžu v souboru najít nejdelší řádek?

zkoušel sem to procházet while cyklem a porovnávat, ale to mi moc nefunogovalo... Možná na to bude nějaký příkaz..

Díky

Ř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

30.4.2013 23:09 Pavel Löbl | skóre: 7 | blog: vadnej_pixel
Rozbalit Rozbalit vše Re: Jak najít nejdelší řádek
Odpovědět | | Sbalit | Link | Blokovat | Admin
longest=""
while read line; do 
  if [[ ${#line} -gt ${#longest} ]]; then 
    longest=$line
  fi 
done < soubor.txt
echo $longest
1.5.2013 11:52 Norman
Rozbalit Rozbalit vše Re: Jak najít nejdelší řádek
Jo, trochu sem si to upravil podle potreby:

#!/bin/bash longest="" while read line; do line=`line | cut -d: -f5 | tr ',,,' ' '` if [[ ${#line} -gt ${#longest} ]]; then longest=$line fi done < passwd echo $longest

a funguje. Díky. :-) Jeste mi ted kamarad poradil, ze to jde asi i pomoci "wc -L"
1.5.2013 11:56 Norman
Rozbalit Rozbalit vše Re: Jak najít nejdelší řádek
ikdyz ted koukam ze to nefunguje... v seznamu:

Alexey Koloskov Brezina Dominik Fiam Jiri Ivanov Dmitrij Jan Koller Jaroslav Roztocil Jiri Cejp

to reklo ze je nejdelsi jmeno "Brezina Dominik"
1.5.2013 11:58 Norman
Rozbalit Rozbalit vše Re: Jak najít nejdelší řádek

ikdyz ted koukam ze to nefunguje... v seznamu:

Alexey Koloskov

Brezina Dominik

Fiam Jiri

Ivanov Dmitrij

Jan Koller

Jaroslav Roztocil

Jiri Cejp

to reklo ze je nejdelsi jmeno "Brezina Dominik"

1.5.2013 12:23 rastos | skóre: 63 | blog: rastos
Rozbalit Rozbalit vše Re: Jak najít nejdelší řádek
Chybu robíš v tom použití tr. Ak si ním chcel dosiahnuť odstránenie troch čiarok, tak tak tr nefunguje.
1.5.2013 13:15 Norman
Rozbalit Rozbalit vše Re: Jak najít nejdelší řádek
Ok, odstranil sem to, a pak to vypadá nějak takto:
Ales Nemecek,,,
Alexey Koloskov,,,
Brezina Dominik,,,
Fiam Jiri,,,
Ivanov Dmitrij,,,
Jan Koller,,,
Jaroslav Roztocil,,,
Jiri Cejp,,,
a stejne to najde jako nejdelsi "Brezina Dominik,,,"
1.5.2013 14:46 rastos | skóre: 63 | blog: rastos
Rozbalit Rozbalit vše Re: Jak najít nejdelší řádek
$ while read line; do   if [[ ${#line} -gt ${#longest} ]]; then     longest=$line;   fi; done 
Ales Nemecek,,,
Alexey Koloskov,,,
Brezina Dominik,,,
Fiam Jiri,,,
Ivanov Dmitrij,,,
Jan Koller,,,
Jaroslav Roztocil,,,
Jiri Cejp,,,
$ echo $longest
Jaroslav Roztocil,,,
$ 

Niečo robíš zle.
1.5.2013 15:03 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Jak najít nejdelší řádek
Když je tam syntaktická chyba, tak to nemůže fungovat správně:
line: command not found
Když chybu odstraním:
#!/bin/bash

longest=""
while read line; do
  line=`echo $line | cut -d: -f5`
  if [[ ${#line} -gt ${#longest} ]]; then
    longest=$line
  fi
done <<EOF
Ales Nemecek,,,
Alexey Koloskov,,,
Brezina Dominik,,,
Fiam Jiri,,,
Ivanov Dmitrij,,,
Jan Koller,,,
Jaroslav Roztocil,,,
Jiri Cejp,,,
EOF

echo $longest
echo "a stejne to najde jako nejdelsi \"Brezina Dominik,,,\""
echo "Oh, really???"
bash$ ./longest.sh
Jaroslav Roztocil,,,
a stejne to najde jako nejdelsi "Brezina Dominik,,,"
Oh, really???

Jesus Jimenez avatar 1.5.2013 20:57 Jesus Jimenez | skóre: 29
Rozbalit Rozbalit vše Re: Jak najít nejdelší řádek
Odpovědět | | Sbalit | Link | Blokovat | Admin
awk 'length > max_length { max_length = length; longest_line = $0 } END { print longest_line }' soubor
Doaenův zákon průtahů: Čím pomaleji pracuješ, tím méně naděláš chyb. -- Murphy

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.