Ubuntu Suomen keskustelualueet
Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: Laiskamato - 18.06.13 - klo:22.10
-
Miten aapo.txt tiedosto esim:
aappo
phaapo
pzaapo
tziipo
ciipo
muutetaan uuteen aapo_2.txt tiedostoon ja aakkosjärjestykseen ja select box muotoon joka olisi muotoa:
<option value="aapo">aapo</option>
<option value="ciipo">ciipo</option>
<option value="phaapo">phaapo</option>
<option value="pzaapo">pzaapo</option>
<option value="tziipo">tziipo</option>
Mitenkä temppu tehdään?
-
$ cat >> aapo.txt
aappo
phaapo
pzaapo
tziipo
ciipo
$ cat aapo.txt |sort |awk '{print "<option value=\""$0"\">"$0"</option>"}' > aapo_2.txt
$ cat aapo_2.txt
<option value="aappo">aappo</option>
<option value="ciipo">ciipo</option>
<option value="phaapo">phaapo</option>
<option value="pzaapo">pzaapo</option>
<option value="tziipo">tziipo</option>
$
Tuosta voinee aloittaa.
Muokkasin aloitusviestin otsikkoa, koska mielestäni vanha aihe ei ollut kovin kuvaava.
-
$ cat aapo.txt |sort |awk '{print "<option value=\""$0"\">"$0"</option>"}' > aapo_2.txt
Tässä nimenomaisessa tapauksessa taitaa muuten olla samantekevää, vaikka putkitettaisiin ensin awkille ja vasta sitten sortille :)
-
Toi SuperOscarin koodi alko pelittään.
Vielä yksi kysymys.
Millä komennolla poistetaan duplikaatit aapo.txt tiedostosta?
-
Toi SuperOscarin koodi alko pelittään.
;D
Millä komennolla poistetaan duplikaatit aapo.txt tiedostosta?
Lisää sortille -u vipu eli:
cat aapo.txt |sort -u |awk '{print "<option value=\""$0"\">"$0"</option>"}' > aapo_2.txt
-
Minulle on tänä vuonna nähtävästi tullut taito hankkia ansiotonta kiitosta ::)
-
Kiitoksia hyvistä ohjeista herrat Tomin ja SuperOscar.
Niistä oli todella apua.
-
Myös pelkkä "echo" tekee tuon täydennysoperaation pikku silmukalla, otetaan havainnollisuuden vuoksi aluksi näytölle tuo:
#!/bin/bash
while read -r nimi
do
a='<option value="@">@</option>'; echo ${a//@/$nimi}
done < "aapo.txt"
Tuosta se menee uuteen tiedostoon pikku muutoksilla:
#!/bin/bash
rm aapo2.txt &>/dev/null
while read -r nimi
do
a='<option value="@">@</option>'; echo ${a//@/$nimi} >>aapo2.txt
done < "aapo.txt"
Tuohon on helppoa täydennellä vaikka se "sort" tai keksiä jotain muuta, ei muuta kuin soveltamaan.
Tallenna tuo vaikka "muunna" nimellä ja anna ajo-oikeus:
chmod +x muunna
ja sitten vain ajat:
./muunna
Ai että et halua tallettaa ensin tiedostoon ? No kirjoitetaan tuo sitten yhdelle riville:
rm aapo2.txt &>/dev/null; while read -r nimi; do a='<option value="@">@</option>'; echo ${a//@/$nimi} >>aapo2.txt; done < "aapo.txt"
Ei ehkä niin havainnollinen mutta tekee saman asian kun tuon rimpsun kopioi ehjänä päätteeseen ja antaa enter: in perään. Hauskaa tämä bash !