Kirjoittaja Aihe: Tekstitiedoston järjestely ja käsittely päättellä [Ratkaistu]  (Luettu 3589 kertaa)

Laiskamato

  • Käyttäjä
  • Viestejä: 168
    • Profiili
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?
« Viimeksi muokattu: 20.06.13 - klo:06.57 kirjoittanut Laiskamato »
Laiskaks haukutaan vaikka mitään en oo tehny!

Tomin

  • Palvelimen ylläpitäjä
  • Käyttäjä / moderaattori+
  • Viestejä: 11487
    • Profiili
    • Tomin kotisivut
Vs: Pääte varmaan olisi avuksi?
« Vastaus #1 : 18.06.13 - klo:22.43 »
Koodia: [Valitse]
$ 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.
« Viimeksi muokattu: 18.06.13 - klo:22.45 kirjoittanut Tomin »
Automaattinen allekirjoitus:
Lisäisitkö [RATKAISTU] ketjun ensimmäisen viestin aiheeseen ongelman ratkettua, kiitos.

SuperOscar

  • Käyttäjä
  • Viestejä: 4069
  • Ocatarinetabellatsumtsum!
    • Profiili
    • Legisign.org
Vs: Pääte varmaan olisi avuksi?
« Vastaus #2 : 18.06.13 - klo:23.01 »
Koodia: [Valitse]
$ 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 :)
pöytäkone 1, NUC: openSUSE Leap 15.6, kannettavat 1–3: Debian GNU/Linux 12; pöytäkone 2: openSUSE Tumbleweed; RPi 1: FreeBSD 14-RELEASE; RPi 2: LibreELEC 11

Laiskamato

  • Käyttäjä
  • Viestejä: 168
    • Profiili
Vs: Tekstitiedoston järjestely ja käsittely päättellä
« Vastaus #3 : 19.06.13 - klo:09.28 »
Toi SuperOscarin koodi alko pelittään.
Vielä yksi kysymys.
Millä komennolla poistetaan duplikaatit aapo.txt tiedostosta?
Laiskaks haukutaan vaikka mitään en oo tehny!

Tomin

  • Palvelimen ylläpitäjä
  • Käyttäjä / moderaattori+
  • Viestejä: 11487
    • Profiili
    • Tomin kotisivut
Vs: Tekstitiedoston järjestely ja käsittely päättellä
« Vastaus #4 : 19.06.13 - klo:14.51 »
Toi SuperOscarin koodi alko pelittään.
;D

Millä komennolla poistetaan duplikaatit aapo.txt tiedostosta?
Lisää sortille -u vipu eli:
Koodia: [Valitse]
cat aapo.txt |sort -u |awk '{print "<option value=\""$0"\">"$0"</option>"}' > aapo_2.txt
Automaattinen allekirjoitus:
Lisäisitkö [RATKAISTU] ketjun ensimmäisen viestin aiheeseen ongelman ratkettua, kiitos.

SuperOscar

  • Käyttäjä
  • Viestejä: 4069
  • Ocatarinetabellatsumtsum!
    • Profiili
    • Legisign.org
Vs: Tekstitiedoston järjestely ja käsittely päättellä
« Vastaus #5 : 19.06.13 - klo:20.45 »
Minulle on tänä vuonna nähtävästi tullut taito hankkia ansiotonta kiitosta ::)
pöytäkone 1, NUC: openSUSE Leap 15.6, kannettavat 1–3: Debian GNU/Linux 12; pöytäkone 2: openSUSE Tumbleweed; RPi 1: FreeBSD 14-RELEASE; RPi 2: LibreELEC 11

Laiskamato

  • Käyttäjä
  • Viestejä: 168
    • Profiili
Kiitoksia hyvistä ohjeista herrat Tomin ja SuperOscar.
Niistä oli todella apua.

Laiskaks haukutaan vaikka mitään en oo tehny!

ajaaskel

  • Palvelimen ylläpitäjä
  • Käyttäjä
  • Viestejä: 3401
    • Profiili
Myös pelkkä "echo" tekee tuon täydennysoperaation pikku silmukalla, otetaan havainnollisuuden vuoksi aluksi näytölle tuo:

Koodia: [Valitse]
#!/bin/bash
while read -r nimi
do
a='<option value="@">@</option>'; echo ${a//@/$nimi}
done < "aapo.txt"

Tuosta se menee uuteen tiedostoon pikku muutoksilla:

Koodia: [Valitse]
#!/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:

Koodia: [Valitse]
chmod +x muunna
ja sitten vain ajat:

Koodia: [Valitse]
./muunna
Ai että et halua tallettaa ensin tiedostoon ?  No kirjoitetaan tuo sitten yhdelle riville:

Koodia: [Valitse]
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 !
« Viimeksi muokattu: 26.06.13 - klo:23.15 kirjoittanut ajaaskel »
Autamme ilolla ja ilmaiseksi omalla ajallamme.  Ethän vaadi, uhoa tai isottele näin saamasi palvelun johdosta.