Schreiben ab einer bestimmten Zeilennummer in eine Textdatei

9

In einem Bash-Skript möchte ich einige Zeilen in eine Textdatei schreiben, aber diese Datei wurde bereits zuvor verwendet und enthält Texte. Ich möchte also einen zusätzlichen Text darin wiedergeben, beginnend mit einer bestimmten Zeilennummer in der Datei.

Ich möchte so etwas:

echo -fromLineNumber 33 -e "anything" >> textPath
Ahmed Zain El Dein
quelle

Antworten:

15

Sie können verwenden sed, um in eine bestimmte Zeile zu schreiben.

Versuche dies:

    sed -i '33ianything' textpath

oder

    sed -i '33i\anything' textpath

In Zeile 33 wird "alles" eingefügt.

kumarprd
quelle
Es sollte funktionieren. Funktioniert gut für mich in Bash 4.2 und Sed 4.2 in Ubuntu.
Kumarprd
1
Moment mal, ich werde es noch einmal versuchen
Ahmed Zain El Dein
Danke, es funktioniert, es war in erster Linie mein Fehler. Vielen Dank
Ahmed Zain El Dein
Kann ich es so sed -i '$numberkanything' textPathaufschreiben? Ich muss die Anzahl der Zeilen direkt aufschreiben
Ahmed Zain El Dein
3
@AhmedZainElDein, die Shell erweitert keine Variablen in einfachen Anführungszeichen. Außerdem müssen Sie der Shell mitteilen, wie der Variablenname vom folgenden Text unterschieden werden soll:sed -i "${number}i\anything" file
Glenn Jackman
2

So behalten Sie die ersten 32 Zeilen bei und fügen anschließend neuen Text hinzu:

head -n 32 oldfile > newfile
echo anything >> newfile
echo goes >> newfile
echo here >> newfile

So fügen Sie nach Zeile 32 einer Datei Text ein:

sed -e '32s/$/\nanything\ngoes\nhere/' oldfile > newfile
Frostschutz
quelle
danke u, aber ich möchte an die alte textdatei meine neuen texte nach einer bestimmten zeilennummer anhängen, um sie nicht in eine neue datei einzufügen, ich hoffe, dass ich mich klar machen kann?
Ahmed Zain El Dein