Il s'agit de la page de manuel pour -n
:
-n
supprimer l'impression automatique de l'espace du motif
Je remarque que lorsque vous ne l' utilisez pas-n
pour certaines opérations, chaque ligne est imprimée sur stdout (et les lignes demandées sont imprimées deux fois):
$ cat test.txt
first
second
third
fourth
fifth
$ sed -n '2,3p' test.txt
second
third
$ sed '2,3p' test.txt
first
second
second
third
third
fourth
fifth
Cependant, cette loi ne s'applique pas aux autres commandes:
$ sed -n 's/t/T/' test.txt
$ sed 's/t/T/' test.txt
firsT
second
Third
fourTh
fifTh
Alors qu'est-ce que ça -n
fait exactement?
la source
-n
imprime chaque ligne en plus des lignes spécifiquement demandées. Ainsi, dans ce cas,-n
supprime l'impression de chaque ligne analysée . Cependant, dans les troisième et quatrième exemples, le comportement est différent. Dans ces cas, sed sans-n
ne produit pas les lignes deux fois, donc l'utilisation-n
ne supprime pas l'impression de chaque ligne analysée mais supprime plutôt l'impression des lignes non modifiées . J'ai du mal à généraliser quand le comportement sera l'un ou l'autre.-n
c'est exactement la même chose: passer de chaque ligne imprimée automatiquement (et le modificateurp
etp
à une commande de remplacement entraîne l'impression supplémentaire de la ligne) dans un mode où les lignes sont imprimées uniquement si vous le dites spécifiquement à (avec lap
commande etc).-n
option ET AUSSI en ajoutant; p
à la commande sed (par exemplesed -n '2,3p; p'
, et vous obtiendrez les mêmes résultats que vous auriez sans l'un ou l'autre. Le-n
supprime l'impression automatique par défaut et l'; p
ajout d'une explicite (généralement équivalente) )