![]() |
|
|
google unix.com
|
|||||||
| Forum | Registrera | Forum Regler | Länkar | Album | FAQ | Medlemslista | Kalender | Söka | Dagens inlägg | Markera forum som lästa |
| Shell-programmering och Skript Post frågor om ksh, CSH, SH, bash, PERL, PHP, sed, awk och andra skalskript och skal skriptspråk här. |
Mer UNIX och Linux Forum Ämnen Du kan hitta Helpful
|
||||
| Tråd | Thread Starter | Forum | Svar | Senaste Inlägg |
| Figur ut komplexa sortera | w020637 | Shell-programmering och Skript | 7 | 02-05-2009 03:13 |
| Sortera data i olika kolumner | mogabr | Shell-programmering och Skript | 15 | 08-04-2008 07:07 |
| Hantera komplexa XML-data i Oracle XML BF 11g | iBot | Oracle Uppdateringar (RSS) | 0 | 04-06-2008 06:10 |
| Script för att sortera data | wizardy_maximus | Shell-programmering och Skript | 1 | 11-21-2007 04:30 |
| Sortera data | bjorb | Shell-programmering och Skript | 11 | 09-15-2005 06:22 |
![]() |
|
|
LinkBack | Thread Tools | Sök i denna tråd | Rate Thread | Visningslägen |
|
|
|
||||
|
Sortera komplicerade uppgifter
Hej,
Kan någon här hjälpa sortering följande data i numerisk ordning? INPUT: FÖRSTA ABC (3) def (13) FGH (1) IJK (6) ABC (2) ANDRA frontserver (10) abc (4) hij (19) tlm (1) hij (1) navet (10) ABC (1) mat (3) OTHERS hij (10) Mok (4) älskling (19) hij (1) ABC (2) ABC (15) ABC (1) hij (3) OUTPUT: FÖRSTA def (13) IJK (6) ABC (3) ABC (2) FGH (1) ANDRA hij (19) frontserver (10) navet (10) abc (4) utfodras (3) ABC (1) hij (1) tlm (1) OTHERS älskling (19) ABC (15) hij (10) Mok (4) hij (3) ABC (2) ABC (1) hij (1) Tack på förhand för din hjälp! |
|
||||
|
Denna produktion är svårt, eftersom det verkar vara sorteras i två olika riktningar, i alfabetisk ordning, men omvänd numeriskt ... kommandorad sortera kan inte göra det, skulle du skriva ditt eget skal-baserade sortering rutiner. Är formen av produktionen verkligen att strikta? Vad är det för uppgifter?
|
|
||||
|
Här är några nummer som skulle förmodligen vara mer effektivt men jag tror gör vad du vill ha: Kod:
#!/bin/sh
while read TITLE LINE
do
ARR=( $LINE )
for ((N=0; N<${#ARR}; N++))
do
if [[ -z "${ARR[$N]}" ]]
then
break
fi
OLDIFS="${IFS}"
IFS="()"
VAL=( ${ARR[$N]} )
printf "%s %s\n" ${VAL[1]} ${VAL[0]}
IFS="${OLDIFS}"
done | sort -rn | (
echo -n $TITLE
while read I STR
do
echo -n " ${STR}(${I})"
done
echo )
done
exit 0
Kod:
$ echo "FIRST abc(3) def(13) fgh(1) ijk(6) abc(2) SECOND dfe(10) abc(4) hij(19) tlm(1) hij(1) hub(10) abc(1) fed(3) OTHERS hij(10) mok(4) bub(19) hij(1) abc(2) abc(15) abc(1) hij(3)" | ./sorter.sh FIRST def(13) ijk(6) abc(3) abc(2) fgh(1) SECOND hij(19) hub(10) dfe(10) abc(4) tlm(1) hij(1) abc(1) OTHERS bub(19) abc(15) hij(10) mok(4) abc(2) hij(1) abc(1) $ |