2017-06-08 1 views
0

In meinem bash, ich möchte wie diese Zeilen von 1 bis $ {Nummer}, löschen:Wie benutzt man eine Shellvariable innerhalb von sed, wenn man den Befehl "d" ausführt?

number=10 
sed '1,${number}d' myfile 

Es mit Syntaxfehler fehlgeschlagen. ich auch versucht, "\ $ {Nummer}", ' "$ number"' arbeitet neithers


ich doppelte Anführungszeichen geändert, es funktioniert unter Befehlszeile, jedoch nicht in Bash-Skript-Datei. Wie funktioniert es?

+0

Sie müssen Ihre Variable außerhalb der zitierten sed-Anweisung setzen und so: sed '1,' $ {number} 'd' myfile –

+0

Zeigen Sie den * genauen * Fehler, den Sie bekommen. – chepner

Antwort

1

ich doppelte Anführungszeichen geändert, es funktioniert unter Befehlszeile, aber nicht innerhalb Bash-Skript-Datei

Ihr Bash-Skript Unter der Annahme:

sed "1,${number}d" myfile 

Sie sollte number Variable in Bash-Prompt exportieren, so dass es in Bash-Skript angezeigt werden kann, wenn es ausgeführt wird:

export number=10 
2

Schliessen Sie Ihren sed Ausdruck in doppelte Anführungszeichen die Variable number zu interpolieren:

sed "1,${number}d" file 
+0

Danke, es funktioniert unter der Kommandozeile, funktioniert aber nicht in einem Bash-Skript. Scheint Bash-Skript wird '1, $ d' tun, die alle löschen wird. –

+0

'Nummer' ist nicht im Skript definiert. – chepner

+0

@HindForsum, posten Sie das entscheidende Fragment Ihres Bash-Skripts zu Ihrer Frage, damit ich Ihre "sed" Verwendung sehen kann – RomanPerekhrest

Verwandte Themen