Menggunakan sed
untuk memodifikasi file di tempat:
sed -i '/^\(report\|-t\(h\|o\)\)/!d' your_file
Ini menginstruksikan sed
untuk menghapus semua baris yang tidak cocok dengan pola. Pola itu sendiri adalah ^
(mulai dari garis), diikuti oleh salah satu report
atau -t
diikuti oleh h
atau o
.
Anda harus mencatat bahwa ini bukan modifikasi aktual di tempat: sed
membuat salinan cadangan sementara dan menimpa file asli dengannya.
Jika Anda ingin sed
menyimpan salinan cadangan dari file asli (yang mungkin merupakan ide bagus jika file tersebut berisi data penting), berikan -i
saklar ekstensi untuk membuat file cadangan:
sed -i'.bak' -e '/^\(report\|-t\(h\|o\)\)/!d' your_file
akan memodifikasi your_file
dan membuat cadangan dari yang disebut asli your_file.bak
.
Catatan tambahan
Tolong jangan salah mengartikan niat saya atau menyinggung ini, tapi saya perhatikan bahwa Anda memiliki banyak pertanyaan terkait pemrosesan teks / regex yang serupa. Saya menyarankan Anda untuk mulai belajar sed
, awk
dan grep
Anda sendiri untuk membantu mempercepat produktivitas Anda. Sekali lagi, jangan salah paham, saya terlalu senang untuk membantu (seperti kebanyakan orang di sekitar sini); hanya saja saya pikir Anda dapat mengambil manfaat besar dari mengambil alat ini untuk penggunaan sehari-hari Anda.
Hanya untuk membuktikan betapa bermanfaatnya orang-orang di sekitar sini, pertimbangkan saran @ slm dalam komentar di bawah ini dan jangan ragu untuk mampir ke ruang obrolan ini kapan saja untuk pertanyaan.
Anda dapat menggunakan grep sederhana untuk ini:
sumber
-th
/-to
menjadi-t[ho]
.grep -e
atauegrep
Menggunakan
sed
:sumber
-th
/-to
menjadi-t[ho]
.Menggunakan
awk
:sumber
-th
/-to
menjadi-t[ho]
.Penanya telah membuat dua poin:
Solusinya, saat ini, membahas poin pertama dan dengan demikian juga yang kedua. Tapi misalkan file lebih besar dan terlihat seperti:
Tidak akan membahas poin kedua OP lakukan yg diperlukan?
melakukan pekerjaan menghilangkan garis yang mungkin tidak diinginkan yang hanya berisi spasi, titik dan garis putus-putus dan mempertahankan sisanya, apa pun itu.
Saya akan berpikir bahwa risiko dari kedua pendekatan tersebut adalah sifat dari file tersebut tidak didefinisikan dengan benar.
sumber
Menggunakan Perl:
atau, untuk mengedit di tempat (seperti
sed
,perl
juga akan membuat cadangan sementara jadi ini tidak benar di tempat mengedit):Itu akan membuat salinan dari file asli yang dipanggil
filename.bak
dan menimpa file asli Anda dengan versi yang diedit.sumber