Le Concept de "Hold espace" et de "Modèle de l'espace" de sed

Je suis de confondre les deux concepts de sed: organiser l'espace et le modèle de l'espace. Quelqu'un peut-il expliquer?

Voici un extrait du manuel:

h H    Copy/append pattern space to hold space.
g G    Copy/append hold space to pattern space.

n N    Read/append the next line of input into the pattern space.

Ces six commandes de vraiment me confondre.

  • Essayez-le vous-même: echo $'1\n2\n3\n4' | sed -n '1~2h;2~2{p;x;p}'
  • Ne pas confondre, il suffit de ne pas les utiliser. Pour autre chose que de simples substitutions sur une seule ligne, vous devez utiliser awk, pas de sed. Tenir des espaces, le motif, les espaces, et 95% de la sed constructions de langage a été inventé avant awk quand il n'y a pas de meilleure alternative. Ils sont devenus obsolètes dès que awk a été inventé au milieu des années 1970 et ne sont conservés vivants aujourd'hui par des gens qui aiment résoudre des problèmes à l'aide de sed arcanes de la syntaxe plutôt que de le faire simplement et cearly en awk. Si vous utilisez plus de s, g, et p (- n) dans sed, alors vous êtes presque certainement à l'aide de l'outil erroné.
  • Morton awk travaille avec des données structurées (chaque ligne a la même structure). Sed est destinée à travailler avec des données aléatoires. Donc vous ne pouvez pas simplement utiliser awk au lieu de sed.
  • Je recommande fortement de lire info sed. Il est beaucoup plus détaillé que le nu de la page de man.
  • Si vous souhaitez examiner un complexe d'expression, vous pouvez utiliser l. Il imprime le modèle actuel de l'espace.
  • Je suis d'accord avec Pithikos. Je suis allé en bas de la voie que Morton a fait, et me suis posé la même question que Morton a fait. Cependant, je n'ai pas encore de rejeter sed facilement.
  • est-il une commande pour imprimer emprise actuelle de l'espace?

InformationsquelleAutor ChenQi | 2012-10-11