2013-05-01 1 views
3

J'essaie d'imprimer une section spécifique d'un fichier que j'ai déterminée en utilisant des numéros de ligne, mais les numéros de ligne varient Je dois donc pouvoir obtenir les numéros de ligne, les stocker en tant que variables, puis utiliser sed pour couper les lignes du fichier stocké.Comment imprimer des lignes à partir d'un fichier en utilisant sed, où les numéros de ligne sont stockés en tant que variables

Voici ce que j'ai jusqu'à présent:

start-loader est un fichier qui contient les lignes que je veux imprimer, mais contient aussi beaucoup d'ordure.

Je peux utiliser sed -n '93,109p' start-loader pour imprimer ce que je dois, mais ce que je veux faire est la suivante:

sed -n '$FL,$LFp' start-loader 

où les variables sont les numéros de ligne que j'ai stockées.

Je sais que ce qui précède n'est pas la syntaxe correcte, à partir de beaucoup de recherches sur le sujet, mais tout ce que j'ai utilisé renvoie une erreur ou ne fonctionne pas. J'ai essayé les guillemets doubles, simples puis doubles pour les variables, les accolades pour les variables, et quelques autres choses avec de nombreux styles de syntaxe différents. Quelqu'un pourrait-il savoir comment je peux faire cela correctement?

Répondre

3

J'espère que l'exemple ci-dessous répondu à votre question:

kent$ s=3 
kent$ e=8 
kent$ seq 20 |sed -n "$s,$e p" 
3 
4 
5 
6 
7 
8 
5

Vous devez séparer la commande p de votre dernière variable ligne en quelque sorte. Soit des éléments suivants devraient fonctionner:

$ sed -n "$FL,${LF}p" start-loader 
$ sed -n "$FL,$LF p" start-loader 

Sans la séparation, la coquille tenterait d'étendre la variable LFp, qui n'existe pas, ce qui entraîne une chaîne vide étant passée à sed et provoquer une erreur de syntaxe.

Vous devez également utiliser des guillemets doubles, et non des guillemets simples, pour permettre aux variables d'être développées avant que sed ne les voit.

+0

Excellent, ça fait exactement ce dont j'ai besoin. Je vous remercie. – bytesahoy

Questions connexes