Interpretazione di ~ in sed


9

Oggi sto imparando sed. C'è questa tilde '~' che mi confonde più di ogni altra cosa.

Ad esempio, il comando

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

sta stampando le righe dispari (nel file output.txt).

Nella stessa esercitazione, viene anche indicato che salta le righe da 1 a 2 e quindi inizia a stampare le righe accanto alla riga numero 2 nel caso in cui utilizziamo

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

Qual è l'interpretazione assoluta di questa tilde?


Cosa dice esattamente il tutorial per il secondo esempio? "salta le righe da 1 a 2" non è una descrizione accurata di ciò che fa quel comando.
JigglyNaga,

Risposte:


13

Questa è sedun'estensione GNU :

first~step

Abbina ogni steplinea che inizia con la linea first. Ad esempio, sed -n 1~2pstamperà tutte le righe dispari nel flusso di input e l'indirizzo 2~5corrisponderà ogni quinta riga, iniziando dalla seconda. firstpuò essere zero; in questo caso, sedfunziona come se fosse uguale a step. (Questa è un'estensione.)

I tuoi due esempi corrispondono alle stesse righe, ma il primo li scrive ( w) in un file mentre il secondo li stampa ( p) ovunque vada l'output standard.

In generale, fare sempre riferimento al manuale del comando. Il manuale è raramente ambiguo. L'applicazione di un comando combinando diversi aspetti della sua funzionalità può essere difficile da spiegare in un tutorial a volte (e a volte un tutorial cerca di rendere le cose più facili da capire riformulando la stessa affermazione in molti modi, il che potrebbe creare confusione), ma il manuale è il riferimento definito per ogni bit di ciò che fa il comando aggregato.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.