Konten filename
file saya adalah sebagai berikut (misalnya):
My block of line starts from here
START
First line
second line
third line
END
and end to here for example.
Saya ingin mengganti blok garis antara START
dan END
hanya dengan satu kata, misalnya dengan SINGLEWORD
. Seperti di bawah ini:
My block of line starts from here
SINGLEWORD
and end to here for example.
Saya dapat menemukan blok baris saya dengan menggunakan perintah ini:
grep -Pzo "START(.|\n)*END" filename
Dan hasil menjalankan perintah di atas akan seperti ini:
START
First line
second line
third line
END
Lalu saya menggunakan perintah ini untuk menggabungkan semua baris menjadi satu baris:
LAST_RESULT | sed -e :a -e '/$/N; s/\n/ /; ta'
Maka saya akan mendapatkan hasil ini:
START First line second line third line END
Dan dengan perintah terakhir saya, LAST_RESULTS | sed 's/.*/SINGLEWORD/'
saya mengubahnya "SINGLEWORD"
dan saya mendapatkan hasil ini.
SINGLEWORD
Sekarang yang saya inginkan adalah: Bagaimana saya bisa menggunakan perintah ini (atau perintah saran Anda) dan mengganti (di tempat) blok baris saya menjadi kata "SINGLEWORD"? Dan hasil akhirnya akan seperti file ini:
My block of line starts from here
SINGLEWORD
and end to here for example.
sumber
sed
harus dimungkinkan tetapi mungkin lebih sulit untuk dibaca (Lihat pertanyaan ini )/
,*
,?
) di dalamnya dan ini hanya contoh. dan bisakah Anda menjelaskan perintah Anda.sed
):\/
,\*
,\?
perl -i -p0e 's/\/\*.*?\*\//SINGLEWORD/sm'
. Seharusnya berhasilSaya bertanya-tanya apakah ini mungkin tanpa
perl
,python
dan lain-lain. Dan saya menemukan solusi ini menggunakansed
:Penjelasan:
/START.*END/
olehSINGLEWORD
, / g pertandingan global (sebanyak yang bisa)Itu ditemukan di sini .
@KasiyA, terima kasih saya telah belajar banyak hal menarik!
sumber