2 votes

Que signifie "/[A-Z]/ s| |/|gp" ?

Je lis un tutoriel sed à https://riptutorial.com/sed/example/13753/lines-matching-regular-expression-pattern .

On dirait que

$ sed -n '/[A-Z]/ s| |/|gp' ip.txt

c'est filtrer 'Add Sub Mul Div' du fichier, et le convertir en 'Add/Sub/Mul/Div'.

Je ne comprends vraiment pas l'expression, étant donné que je viens de lire https://www.tldp.org/LDP/abs/html/x23170.html .

Il ne correspond même pas à la syntaxe d'impression qui est :

[address-range]/p

et le signe de pipe '|' est-il ici une alternance ?

Quelqu'un peut-il expliquer :

'/[A-Z]/ s| |/|gp'

en anglais ?

Editar

J'ai également constaté que l'espace vide supplémentaire avant 's' et après '/' est autorisé et ne fait rien. la syntaxe correcte devrait être :

[address-range]/s/pattern1/pattern2/

la vérification de la syntaxe du motif sed n'est pas stricte, et prête à confusion

6voto

Sundeep Points 11599
  • -n l'option désactive l'impression automatique
  • sed permet de qualifier les commandes avec un filtrage d'adresses, qui peuvent être des regex ou des adresses de lignes.
    • par exemple, /foo/ d supprimera les lignes contenant foo
    • y /foo/ s/baz/123/ changera baz a 123 uniquement si la ligne contient également foo
  • /[A-Z]/ ne correspond qu'aux lignes contenant au moins un alphabet en majuscule

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X