Die meisten Lösungen auf dieser Seite funktionieren nicht für mich (FreeBSD 10.3 amd64). Ian Wills OSX Lösung funktioniert fast immer, aber ist ziemlich schwer zu folgen: - (
Es gibt eine einfache Lösung, die fast immer zu arbeiten: (wenn $ f die Datei):
sed -i '' -e '$ a \' "$ f"
es ist ein großes Problem mit der sed Lösung. es gibt Ihnen nie die Gelegenheit, einfach zu überprüfen (und nicht eine neue Zeile anhängen)
Beide oben genannten Lösungen für DOS-Dateien fehlschlagen.Ich denke, die meisten portable/skriptfähige Lösung ist wahrscheinlich wahrscheinlich die einfachste, die ich selbst entwickelt habe: -)
Hier ist das elementare SH-Skript, das Datei/Unix2dos/Tail kombiniert. In Produktion, werden Sie wahrscheinlich benötigen "$ f" in Anführungszeichen zu verwenden und Schwanz Ausgabe (eingebettet in den Shell-Variable mit dem Namen letzten) als \ "$ f \"
if file $f | grep 'ASCII text' > /dev/null; then
if file $f | grep 'CRLF' > /dev/null; then
type unix2dos > /dev/null || exit 1
dos2unix $f
last="`tail -c1 $f`"
[ -n "$last" ] && echo >> $f
unix2dos $f
else
last="`tail -c1 $f`"
[ -n "$last" ] && echo >> $f
fi
fi
Hope this jemand hilft holen.
Suchen Sie nur nach einer breiten Anzeige von Dateien aus einem Ordner nach unten? Ihre Frage ist im obigen Beispiel nicht sehr klar. – James
Was bedeutet "normales txt"? Sprechen Sie über Dateien, die mit einer * leeren * Zeile (\ n \ n) enden oder nur Dateien, die mit einem Zeilenumbruch enden? Sie können 'od -c filename' verwenden, um eine eindeutige Darstellung der Datei zu drucken. – jfs
Nur um zu betonen: Newline ist * nicht * das gleiche wie * leere * Zeile. Ein Newline ist ein einzelnes Zeichen - es grenzt ab, was wir als "Zeilen" sehen. Eine leere Zeile ist einfach eine "Zeile" ohne Zeichen, typischerweise zwei aufeinanderfolgende Zeilenwechselzeichen mit nichts dazwischen oder die erste Zeile in einer Datei, die mit einem Zeilenumbruch beginnt. Einige Leute rufen auch Zeilen auf, die nur aus Leerzeilen bestehen, und reservieren den Begriff "Leerzeile" für zwei aufeinanderfolgende Zeilenwechselzeichen. Sie sollten sich darüber klar sein, was Sie wollen. – jw013