Ich arbeite an einem Bash-Skript, das den Inhalt eines Textdokuments abhängig von den Daten in der Zeile aufteilt.
Wenn der Inhalt der Originaldatei im Sinne von wäre
01 line
01 line
02 line
02 line
Wie kann ich mit bash in Zeile 3 dieser Datei einfügen, um das Ergebnis zu erhalten?
01 line
01 line
text to insert
02 line
02 line
Ich hoffe, dies mit einem Heredoc oder ähnlichem in meinem Drehbuch zu tun
#!/bin/bash
vim -e -s ./file.txt <<- HEREDOC
:3 | startinsert | "text to insert\n"
:update
:quit
HEREDOC
Das obige funktioniert natürlich nicht, aber irgendwelche Empfehlungen, die ich in dieses Bash-Skript umsetzen könnte?
shell-script
text-processing
TheLovelySausage
quelle
quelle
Antworten:
Sie können Vim im Ex-Modus verwenden:
3
Zeile 3 anwähleni
Text und Zeilenumbruch einfügenx
schreiben Sie, wenn Änderungen vorgenommen wurden (sie haben) und beenden SieOder durch passende Zeichenfolge:
quelle
sed
wäre eine traditionelle Wahl (GNU sed hat wahrscheinlich eine einfachere Form als diese).Oder extrem traditionell
ed
(Bonus! In-Place-Bearbeitung ohne die nicht portierbaresed -i
Form).(Das hat nichts damit zu tun
bash
.)quelle
echo text to insert
durchcat file-to-insert.txt
echo
s, könnten Sieprintf '%s\n' 2 a 'text to insert' . wq
Wie wäre es mit so etwas wie:
quelle
quelle