Der ViM-Befehl „Ausführen“ im Bash-Skript interpretiert den Befehl „$“ scheinbar nicht

Der ViM-Befehl „Ausführen“ im Bash-Skript interpretiert den Befehl „$“ scheinbar nicht

Ich versuche, einen bestimmten ViM-Befehl in ein Linux-Bash-Skript zu verschieben. In ViM lautet der Befehl

:g/^SOMEWORD$/d

Um alle Zeilen zu löschen, die nur ein bestimmtes Wort und sonst nichts enthalten.

Wenn ich es in ein Bash-Skript verschiebe, funktioniert es nicht mehr

vim -e -s /tmp/file.txt << EOF
    :g/^SOMEWORD$/d
    :update
    :quit
EOF

Das Escapen von $scheint keinen Unterschied zu machen. Gibt es $in diesem Szenario eine andere Möglichkeit, das zu verwenden, oder übersehe ich etwas anderes?

vim -e -s /tmp/file.txt << EOF
    :g/^SOMEWORD\$/d
    :update
    :quit
EOF

Antwort1

Ich verstehe nicht, warum, aber beim direkten Bearbeiten der Datei in ViM wurde sie als Unix-Datei behandelt, beim Bearbeiten über das Here-Doc jedoch als DOS-Datei. Ich habe dieses wirklich praktische Tool gefunden, das das Problem jedoch behoben hat

`yum install dos2unix`
dos2unix ./filename.txt

Dies scheint die Datei mit den Unix-Dateistandards kompatibel zu machen

verwandte Informationen