2010/1/6 gdeys...@gmail.com <gdeys...@gmail.com>:
>
> Sip, dah aku coba, agak bingung sih... klo kira2 bentuknya kek gini :
> date - 2003-10-12T02:12:45Z
> Bisa gak klo potongnya dengan cara 7 digit pertama (date - = 7digit)
> kemudian diambil pada digit ke 8-17 (2003-10-12 = digit ke 8-17) kemudian
> digit ke 18 sampe terakhir dihapus.
> Digit disini bisa diartikan sebagai Karakter

kalau ingin memotong karakter ke x sampai ke y bisa pakai cut, misalnya:

echo 'date - 2003-10-12T02:12:45Z' | cut -c 8-17
hasilnya: 2003-10-12


> Metode -f 3- itu artinya memotong pada karakter pertama berupa 3 pada 2003
> hal ini gak masalah klo bash script dijalankan pada single command, nantinya
> saya mo melakukan banyak command, jd saya gak bisa menggunakan cara ini.
> dan
> -f 1 -d: adalah memotong karakter setelah :
> </cmiiw>

bukan, cut itu bisa bekerja di beberapa mode. Mode yang penting:
- cut dari karakter ke x - y (ini harusnya dah jelas)
- cut field  ke x-y.

Dalam contoh

echo 'date - 2003-10-12-10:14pm' | cut -f 3- -d' '| cut -f 1 -d:

Artinya, potong masukan di karakter spasi (-d' ' artinya pemisahnya
adalah spasi). Waktu dipotong, hasilnya adalah:

date
-
2003-10-12-10:14pm

Kita cuma ingin yang terakir saja (baris ke 3, dst) jadi kita pakai -f
3, hasilnya:

echo 'date - 2003-10-12-10:14pm' | cut -f 3- -d' '

2003-10-12-10:14pm

Berikutnya kita mau membuang dari titk dua ke kanan, jadi sekarang
kita pakai pemisah/delimiter ':'. Kali ini hasilnya dala


2003-10-12-10
14pm

Karena kita hanya ingin yang pertama, maka kita perlu cut lagi:

echo '2003-10-12-10:14pm' | cut -f 1 -d':'

Sehingga jika digabung:

echo 'date - 2003-10-12-10:14pm' | cut -f 3- -d' '| cut -f 1 -d:

Lalu masalah perintah, saya cuma memberi contoh untuk satu kasus jadi
pakai echi. Kalau Anda punya file yang isinya semuanya baris tanggal
ya tinggal diganti memakai cat.

misalnya

cat file | cut -c 8-18

hasilnya akan ke layar, atau

cat file | cut -c 8-18 > file.txt

Untuk belajar bash, cobalah menjalankan perintah sepotong2 untuk
melihat hasilnya.

>
>> Bisa dengan sed
>>
>> echo 'date - 2003-10-12-10:14pm' | sed -re 's/[^0-9]+([0-9\-]+).*/\1/g'
>>
>> Ini lebih reliable, misalnya ada spasi ekstra, masih bisa jalan. Ini
>> bekerja dengan mengabaikan semua yang bukan digit di awal ([^0-9]+),
>> lalu mengambil semua digit dan tanda - ([0-9\-]+) dan mengabaikan
>> sisanya (.*).
>>
>
> Whuah.. yg ini malah bikin saya tambah bingung :d
> dari man sed mengatakan : 'stream editor for filtering and transforming
> text'
>
> Whuah keknya bisa tuh.... tapi masih bingung jugak (doh)

Iya ini memang lebih kompleks dengan regex

>>> gimana cara merename sebuah file dengan menggunakan output dari sebuah
>>> command
>>>
>>
>> Ini kurang jelas, bisa diperjelas maksud pertanyaannya?
>>
>>
>
> misal kek gini :
> less 1.txt
> 2008-01-12  > output
> trus output diatas digunakan untuk
> ren 1.xls 2008-01-12.xls
> artinya :
> ren 1.xls [output]
>
> dan command2 diatas dibuat dalam satu script atau satu baris command

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

Anda juga bisa memakai file:

cat fileku | sed -e 's/A/X/'

Jika ingin mengganti semua A bukan A pertama, tambahkan g (global)

cat fileku | sed -e 's/A/X/g'

Berikutnya:

cat $X|sed -e 's/$/.xls/'

tadi kita pakai echo, tapi sekarang kita pake cat karena ingin isi file 1.txt

cat 1.txt|sed -e 's/$/.xls/'

$ adalah akhir baris kita mau mengubah akhir baris menjadi .xls
(menambah .xls di belakang).

Jadi perintahnya menjadi:

mv "$(echo $X|sed -e 's/.txt/.xls/')" "$(cat $X|sed -e 's/$/.xls/')"

Kalau Anda punya banyak file text di satu direktori:

for X in *.txt; do mv "$(echo $X|sed -e 's/.txt/.xls/')" "$(cat $X|sed
-e 's/$/.xls/')"; done

Kali ini saya bahas dengan detail karena lagi pengen aja :), tapi
mohon Anda belajar dulu perintah2 dasar seperti sed, for, cat, dsb.
Supaya lebih mudah, dan saya tidak perlu menjelaskan panjang lebar.

Beberapa perintah dasar:
cat
head
tail
cut
grep
sed

Pelajari juga karakter2 spesial, seperti $(), lalu pelajari loop (for,
while, dsb)

Di google banyak tutorial, jadi kalau man pagenya tidak jelas, jangan
menyerah di man page.

-- 
Regards
Yohanes
http://yohan.es/

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

Kirim email ke