Interpretasi ~ in sed

9

Saya belajar sed saat ini. Ada tilde ini '~' yang membingungkan saya lebih dari apa pun.

Misalnya, perintahnya

sed -n '1~2 w output.txt' input.txt

sedang mencetak baris bernomor ganjil (ke file output.txt).

Dalam tutorial yang sama, itu juga diberikan bahwa ia melompati garis dari 1 hingga 2 dan kemudian mulai mencetak garis di sebelah baris nomor 2 jika kita menggunakan

sed -n '1~2 p' input.txt

Apa interpretasi absolut dari tilde ini?

Upendra Pratap Singh
sumber
Apa, tepatnya, yang dikatakan tutorial untuk contoh kedua? "melompati garis dari 1 hingga 2" bukan deskripsi akurat tentang apa yang dilakukan perintah itu.
JigglyNaga

Jawaban:

13

Ini adalah sedekstensi GNU :

first~step

Cocokkan setiap stepbaris dimulai dengan garis first. Misalnya, sed -n 1~2pakan mencetak semua baris bernomor ganjil dalam aliran input, dan alamat 2~5akan cocok dengan setiap baris kelima, dimulai dengan yang kedua. firstbisa nol; dalam hal ini, sedberoperasi seolah-olah sama dengan step. (Ini adalah ekstensi.)

Dua contoh Anda cocok dengan baris yang sama, tetapi yang pertama menulis ( w) ke file sementara yang kedua mencetak ( p) ke mana pun output standar pergi.

Secara umum, selalu merujuk pada manual perintah. Manual jarang ambigu. Penerapan perintah dengan menggabungkan beberapa aspek fungsionalitasnya mungkin sulit dijelaskan dalam tutorial kadang-kadang (dan kadang-kadang tutorial mencoba membuat hal-hal lebih mudah dipahami dengan mengulangi pernyataan yang sama dalam banyak cara, yang dapat menyebabkan kebingungan), tetapi manual adalah referensi yang pasti untuk setiap bit dari apa yang dilakukan perintah agregat.

Kusalananda
sumber