Bash - text fájl módosítása

Sziasztok!

Szeretnék hírlevelet küldeni mutt segítségével, ami működik is, beállítottam gmail accountomra, így nem kell smtp szervert létrehoznom.
Viszont van egy rakás címzettem ami egy text fájlban van lementve. Egy sor így néz ki:"néve-mail"
Hogy tudom a fájlból kiszedni soronként a nevet, és külön az e-mail címet?
A levél törzse szintén egy txt fájlban van lementve. Abban viszont szeretném kicserérni a Tisztelt ! szövegrészt az emberünk nevére. majd egyesével el tudom küldeni a levelet.

Szeretném kérni a segítségeteket, hogy honnan is lehetne eindulni.

Hozzászólások

awk, perl stb. pl.


#!/bin/bash

cat cimlista.txt | while read SOR; do
    NEV=`echo $SOR | awk -F"\t" '{print $1;}'`
    CIM=`echo $SOR | awk -F"\t" '{print $2;}'`

SZOVEG=$(cat << 'EOF'
Tisztelt ${NEV}!

asdf asdf asdf 
jklé jklé jklé
foo
bar
baz
EOF
)

mutt -s "Hirlevel" "$CIM" < "$SZOVEG"

done

HTH
--
A gyors gondolat többet ér, mint a gyors mozdulat.

Egy sor így néz ki:"néve-mail" -> akkor sehogy

Helló

Én annak a híve vagyok, hogy amit az ember saját maga talál ki, az segít, hogy a jövőben hasonló helyzetben önállóan is meg tudja oldani.

Néhány ötletet viszont szívesen adok, ami alapján el tudsz indulni.

Shell scriptben:
Ha szöveges fájlt soronként kell feldolgozni, akkor:
for i in `cat fájl`;do
...
done
Ha a sorban a - karaktert figyelve kell elválasztani a szövegrészeket akkor awk -F \- '{print $1}'

Remélem ez segített

Üdv

Sempi

PHPAdmin - Ha a táblázatkezelő már nem elég...

Azert leirhatnad, hgy az IFS-sel te hogy gondolod, mert szerintem az emberek zome nem jon ra pipe (tehat uj processz inditas) nelkuli megoldasra:

$ a=almaXkorteXnarancsXszilva
$ oifs="$IFS" IFS=X b=( $a ) IFS="$oifs" ; unset oifs
$ set | grep -e '^a=' -e '^b='
a=almaXkorteXszilvaXnarancs
b=([0]="alma" [1]="korte" [2]="szilva" [3]="narancs")
$

(Termeszetesen ha nem bash, hanem ksh - ahol mas a tombvaltozok kezelese -, ott a

b=( $a )

helyett

; set -A b $a ;

formaban kell megcsinalni.)
(Szerk: a ksh-s reszbol kimaradt egy fontos pontosvesszo.)

ebben biztos voltam.

Volt egy kérdés, volt egy válasz, ami alapján el tud indulni az emberünk.
Aztán jön a szokásos, jönnek az okos beszólások, ami senkinek sem kell. Tudom, most jön az, hogy én is ilyet írok. Sajnos manapság a HUP csak erről szól. Mindenki akkora szakértő, hogy már csak fikázni tud....

Sziasztok,

Írtam egy ciklust, ez a tartalma: (csak kiszed és egy kicsit rendezi a fájlok kinézetét) a célom az, hogy egy szabályos html oldal jöjjön létre majd a a végén, csak előtte ki kellene tisztítani a txt fájlt.

#!/bin/bash

for i in *.txt
do
if [ -f "$i" ]
then
iconv -f utf-16 -t utf-8 *.txt | sed 's/<\|>\||/ /g' | sed 's/^[[:space:]]*//; s/;[[:space:]]*/;/g' | sed 's/ [0-9]\{4\}//g'
fi
done

Tudnátok segíteni abban, hogy azt azt hogyan lehet elérni, hogy a mappa, ahol futtatom, jelenleg 6 db txt fájlt tartalmaz, a ciklus hozzon létre 6 db új fájlt a 6 eredeti nevével, csak fűzzön hozzá egy fájlnév_tmp.txt végződést azért, hogy legyen 6 ideiglenes fájlom, amivel tovább tudok majd lépni.

Köszönöm szépen!

Közben találtam egy másik megoldást is: ls *.txt | awk -F '.' '{print $1"_tmp."$2}'
de a tied egyszerűbb.

Viszont most meg előjött egy hiba, ami eddig nem volt:

"iconv: incomplete character or shift sequence at end of buffer"

A fájlokra ez a jellemző: Little-endian UTF-16 Unicode text, with very long lines, with CRLF, LF line terminators

Köszi!