2010/1/6 Yohanes Nugroho <yoha...@gmail.com>:
>---<pemaparan lengkap dipotong>---
> Jadi isi file 1.txt itu adalah "2008-01-12"? lalu mau rename 1.xls ke
> 2008-01-12?
>
> misalnya X adalah nama file (1.txt):
>
> bash$ X=1.txt
> bash$ mv "$(echo $X|sed -e 's/.txt/.xls/')" "$(cat $X|sed -e 's/$/.xls/')"
>
> $(xxx) gunanya mengeksekusi perintah x, misalnya jika isi file 1.txt
> adalah "hello.doc":
>
> cat $(cat 1.txt)
>
> pertama $(cat 1.txt) akan dieksekusi, hasilnya adalah "hello.doc"
>
> berikutnya:
>
> cat hello.doc
>
> akan dieksekusi
>
>
> Jadi perintah
>
> mv "$(echo $X|sed -e 's/.txt/.xls/')" "$(cat $X|sed -e 's/$/.xls/')"
>
> bisa dipecah jadi 3:
> - perintah mv itu sendiri diikuti 2 parameter
> - perintah "$(echo $X|sed -e 's/.txt/.xls/')"
> - perintah "$(cat $X|sed -e 's/$/.xls/')"
>
> Tapi pertama saya mengeset Xmenjadi 1.txt dengan
>
> X=1.txt
>
> perintah mv sudah jelas. Berikutnya kita lihat yang di dalam $(...) yang 
> pertama
>
> echo $X|sed -e 's/.txt/.xls/'
>
> artinya filter X dengan sed. Perintah sed yang paling sederhana adalah
> untuk mereplace. Karena namanya .txt, kita mau ubah menjadi 1.xls.
>
> Anda bisa mencoba2 sendiri, misalnya:
>
> echo "ABC" | sed -e 's/A/X/'
> hasilnya jadi XBC

Kalau tujuannya memang memberi contoh dalam konteks penggunaan
sed untuk substitusi ini adalah penjelasan yg ok.

Sedikit koreksi untuk menggunakan regex untuk suffix substitution
perlu menambahkan '\' sebelum '.' karena '.' berarti any single character

echo $X | sed -e 's/\.txt/xls/'

Kalau tidak menggunakan '\'
maka nama file "fooXtxt" akan menjadi "foo.xls"

Dalam real world scripting kadang perlu dioptimalkan juga,
dalam hal ini bash punya builtin parameter expansion &
kalau untuk bashv2 (or later) ada $(< file) pengganti $(cat file)

X=1
mv ${X%.txt}.xls $(<$X).xls

-- 
Berrylink™ - Makassar
one stop BlackBerry® solution
@Karebosi Link Blok J-66

--
Berhenti langganan: linux-programming-unsubscr...@linux.or.id
Arsip dan info: http://linux.or.id/milis

Kirim email ke