maaf baru gabung, coba klo kayak gini bang

# berubah.sh
# file test.txt yang mau di sed, test.tmp hasilnya
cat test.txt|sed "s/,(/\n(/g" > test.tmp
namauser=(`cat test.tmp|cut -d, -f1|gawk 'match($0,"[(](.*)",a){print a[1]}'`)
namadomain=(`cat test.tmp|gawk 'match($0,"/mailbox/domains/(.*)/",a)
{print a[1]}'`)
arrcount=${#namauser[*]}

i=0
while [ $i -lt $arrcount ]
do
   usernama=${namauser[$i]}
   domainnama=`echo ${namadomain[$i]}|cut -d'/' -f1`
   echo $usernama
   echo $domainnama
   cat test.tmp|sed "s/($usernama/($usernama,'$domainnama'/g" > test.tmp
(( i=i+1 ))
done

On 1/19/09, Wardi <[email protected]> wrote:
>
> On Mon, Jan 19, 2009 at 11:45:11AM +0700, ahmad riza h nst wrote:
>>
>> 2009/1/19 Wardi <[email protected]>:
>> >
>> >
>> > menyisipkan di depan pattern pakai sed gampang, dengan subtitute,
>> > grouping regex, dan back reference:
>> >  sed -e "s/\(pattern\)/'nama-domain-saya.co.id',\1/g"
>> >
>> > mencari patternnya yang susah kalau inputnya seperti itu,
>>
>> input nya satu baris koq bang, cuma mungkin waktu copy paste ke sini
>> jadi berantakan.
>> thanks buat sarannya, aku cuma ngga ngerti buat nyisip nya kerna
>> selain karakter yang cocok itu selalu berubah juga kerna belum pernah
>> pake \1 sebelumnya buat replace :)
>
> maksudku kalau bisa satu record jadi satu baris (bukan keseluruhannya
> satu baris), karena sed memproses perbaris, mencari patternnya mungkin
> lebih gampang, menyisipkannya di belakang pattern, karena pattern  yang
> di depan lebih mudah dilihat polanya.
> kira-kira textnya menjadi:
>
> INSERT INTO `vpopmail` VALUES ('postmaster','9rjSl4ONjIvtQ',...
> INSERT INTO `vpopmail` VALUES ('mzachri','NeIRtv19MRCds',...
> INSERT INTO `vpopmail` VALUES ('bekasi10','UVCI4BaPWvKak',...
>
> trus diproses dengan sed:
>   sed -e "s/\(^INSERT INTO .vpopmail. VALUES
> ('[^']\+',\)/\1'nama-domain-saya.co.id',/"
>
> perhatikan wrappingnya, command sed yang di atas itu seharusnya satu
> baris.
> --
> Wardi
>


-- 
Andi Sulistyo Nugroho
http://drakulil.wordpress.com

Kirim email ke