ich unten verwenden, um Text auf Zeilennummern 29 to 32
zu ersetzen:ersetzt bestimmte Zeilennummern sed mit
sed -i '29,32 s/^ *#//' file
Wie kann ich weitere Zeilennummern heißt Zeile 35 to 38
, Linie 43
& Linie 45
in obigem Befehl?
ich unten verwenden, um Text auf Zeilennummern 29 to 32
zu ersetzen:ersetzt bestimmte Zeilennummern sed mit
sed -i '29,32 s/^ *#//' file
Wie kann ich weitere Zeilennummern heißt Zeile 35 to 38
, Linie 43
& Linie 45
in obigem Befehl?
Mit GNU sed. m
ist hier ein Etikett.
sed -i '29,32bm;35,38bm;43bm;45bm;b;:m;s/^ *#//' file
Von man sed
:
b label
: Branch Etikett; Wenn das Label weggelassen wird, verzweigen Sie zum Ende des Skripts.
: label
: Bezeichnung für b- und t-Befehle.
Großartig! Funktioniert wie Charme .. Danke :) –
Dies könnte für Sie arbeiten (GNU sed):
cat <<\! | sed 's:$:s/^ *#//:' | sed -f - -i file
29,32
35,38
43,45
!
erstellen hier-Dokument mit der Linie Bereiche, die Sie wünschen und diese zu einem sed-Skript übergeben, die ein anderes sed-Skript erstellt, das gegen ausgeführt wird die gewünschte Datei.
Die hier-Dokument könnte durch eine Datei ersetzt werden:
sed 's:$:s/^ *#//:' lineRangeFile | sed -f - -i file
Danke @potong für Alternative. Ich ging mit der obigen Lösung. –
könnte besser sein AWK 'awk verwenden‚NR> 28 && NR < 32 || NR > 34 && NR <39 || NR == 43 || NR == 45 {#do gsub #} 'Datei ' – VM17
@VarunM Danke für die Alternative, aber ich werde mit unter Antwort gehen. –