it-swarm.com.de

Konvertieren der Newline-Formatierung von Mac nach Windows

Ich benötige ein Konvertierungsprogramm skript, das eine auf einem Mac erstellte SQL-Dump-Datei in eine unter Windows lesbare Datei konvertiert. Dies ist eine Fortsetzung eines Problems, das ich hatte/- hier . Das Problem scheint in der Formatierung von Zeilenumbrüchen in Textdateien zu liegen, aber ich kann kein Tool finden, um die Konvertierung durchzuführen ...

115
Yarin

Windows verwendet carriage return + line feed für Newline:

\r\n

Unix verwendet nur Line feed für Newline:

\n

Zum Schluss ersetzen Sie einfach jedes Vorkommen von \n durch \r\n.
Sowohl unix2dos als auch dos2unix sind standardmäßig nicht unter Mac OSX verfügbar.
Zum Glück können Sie einfach Perl oder sed verwenden, um die Aufgabe auszuführen:

sed -e 's/$/\r/' inputfile > outputfile                # UNIX to DOS  (adding CRs)
sed -e 's/\r$//' inputfile > outputfile                # DOS  to UNIX (removing CRs)
Perl -pe 's/\r\n|\n|\r/\r\n/g' inputfile > outputfile  # Convert to DOS
Perl -pe 's/\r\n|\n|\r/\n/g'   inputfile > outputfile  # Convert to UNIX
Perl -pe 's/\r\n|\n|\r/\r/g'   inputfile > outputfile  # Convert to old Mac

Code-Snippet von:
http://en.wikipedia.org/wiki/Newline#Conversion_utilities

121
Anne

Dies ist eine verbesserte Version von Annes Antwort - wenn Sie Perl verwenden, können Sie die Datei direkt bearbeiten, anstatt eine neue Datei zu erstellen:

Perl -pi -e 's/\r\n|\n|\r/\r\n/g' file-to-convert  # Convert to DOS
Perl -pi -e 's/\r\n|\n|\r/\n/g'   file-to-convert  # Convert to UNIX
118
JosephH

Sie können unix2dos mit Homebrew installieren.

brew install unix2dos

Dann können Sie das tun:

unix2dos file-to-convert

Sie können DOS-Dateien auch in Unix konvertieren:

dos2unix file-to-convert
99
Steven Hirlston

Sie wollen wahrscheinlich unix2dos :

$ man unix2dos

NAME
       dos2unix - DOS/MAC to UNIX and vice versa text file format converter

SYNOPSIS
           dos2unix [options] [-c CONVMODE] [-o FILE ...] [-n INFILE OUTFILE ...]
           unix2dos [options] [-c CONVMODE] [-o FILE ...] [-n INFILE OUTFILE ...]

DESCRIPTION
       The Dos2unix package includes utilities "dos2unix" and "unix2dos" to convert plain text files in DOS or MAC format to UNIX format and vice versa.  Binary files and non-
       regular files, such as soft links, are automatically skipped, unless conversion is forced.

       Dos2unix has a few conversion modes similar to dos2unix under SunOS/Solaris.

       In DOS/Windows text files line endings exist out of a combination of two characters: a Carriage Return (CR) followed by a Line Feed (LF).  In Unix text files line
       endings exists out of a single Newline character which is equal to a DOS Line Feed (LF) character.  In Mac text files, prior to Mac OS X, line endings exist out of a
       single Carriage Return character. Mac OS X is Unix based and has the same line endings as Unix.

Sie können unix2dos entweder auf Ihrem DOS/Windows-Computer mit cygwin oder auf Ihrem Mac mit MacPorts ausführen.

15
Paul R

Einfach tr löschen:

tr -d "\r" <infile.txt >outfile.txt
13
parahren
  1. Installieren Sie dos2unix mit Homebrew
  2. Führen Sie 'find ./ -type f -exec dos2unix {} \;' aus. rekursiv alle Zeilenenden im aktuellen Ordner konvertieren
3
AAverin

vim kann auch Dateien von UNIX in das DOS-Format konvertieren. Zum Beispiel:

vim hello.txt <<EOF
:set fileformat=dos
:wq
EOF
2
Stephen Quan

Das folgende ist ein vollständiges Skript, das auf den obigen Antworten basiert, zusammen mit der Überprüfung der Systemintegrität und funktioniert unter Mac OS X und sollte auch auf anderen Linux/Unix-Systemen funktionieren (obwohl dies nicht getestet wurde).

#!/bin/bash

# http://stackoverflow.com/questions/6373888/converting-newline-formatting-from-mac-to-windows

# =============================================================================
# =
# = FIXTEXT.SH by ECJB
# =
# = USAGE:  SCRIPT [ MODE ] FILENAME
# =
# = MODE is one of unix2dos, dos2unix, tounix, todos, tomac
# = FILENAME is modified in-place
# = If SCRIPT is one of the modes (with or without .sh extension), then MODE
# =   can be omitted - it is inferred from the script name.
# = The script does use the file command to test if it is a text file or not,
# =   but this is not a guarantee.
# =
# =============================================================================

clear
script="$0"
modes="unix2dos dos2unix todos tounix tomac"

usage() {
    echo "USAGE:  $script [ mode ] filename"
    echo
    echo "MODE is one of:"
    echo $modes
    echo "NOTE:  The tomac mode is intended for old Mac OS versions and should not be"
    echo "used without good reason."
    echo
    echo "The file is modified in-place so there is no output filename."
    echo "USE AT YOUR OWN RISK."
    echo
    echo "The script does try to check if it's a binary or text file for sanity, but"
    echo "this is not guaranteed."
    echo
    echo "Symbolic links to this script may use the above names and be recognized as"
    echo "mode operators."
    echo
    echo "Press RETURN to exit."
    read answer
    exit
}

# -- Look for the mode as the scriptname
mode="`basename "$0" .sh`"
fname="$1"

# -- If 2 arguments use as mode and filename
if [ ! -z "$2" ] ; then mode="$1"; fname="$2"; fi

# -- Check there are 1 or 2 arguments or print usage.
if [ ! -z "$3" -o -z "$1" ] ; then usage; fi

# -- Check if the mode found is valid.
validmode=no
for checkmode in $modes; do if [ $mode = $checkmode ] ; then validmode=yes; fi; done
# -- If not a valid mode, abort.
if [ $validmode = no ] ; then echo Invalid mode $mode...aborting.; echo; usage; fi

# -- If the file doesn't exist, abort.
if [ ! -e "$fname" ] ; then echo Input file $fname does not exist...aborting.; echo; usage; fi

# -- If the OS thinks it's a binary file, abort, displaying file information.
if [ -z "`file "$fname" | grep text`" ] ; then echo Input file $fname may be a binary file...aborting.; echo; file "$fname"; echo; usage; fi

# -- Do the in-place conversion.
case "$mode" in
#   unix2dos ) # sed does not behave on Mac - replace w/ "todos" and "tounix"
#       # Plus, these variants are more universal and assume less.
#       sed -e 's/$/\r/' -i '' "$fname"             # UNIX to DOS  (adding CRs)
#       ;;
#   dos2unix )
#       sed -e 's/\r$//' -i '' "$fname"             # DOS  to UNIX (removing CRs)
#           ;;
    "unix2dos" | "todos" )
        Perl -pi -e 's/\r\n|\n|\r/\r\n/g' "$fname"  # Convert to DOS
        ;;
    "dos2unix" | "tounix" )
        Perl -pi -e 's/\r\n|\n|\r/\n/g'   "$fname"  # Convert to UNIX
        ;;
    "tomac" )
        Perl -pi -e 's/\r\n|\n|\r/\r/g'   "$fname"  # Convert to old Mac
        ;;
    * ) # -- Not strictly needed since mode is checked first.
        echo Invalid mode $mode...aborting.; echo; usage
        ;;
esac

# -- Display result.
if [ "$?" = "0" ] ; then echo "File $fname updated with mode $mode."; else echo "Conversion failed return code $?."; echo; usage; fi
1
ECJB

Verwenden Sie unter Yosemite OSX den folgenden Befehl:

sed -e 's/^M$//' -i '' filename

wobei die ^M-Sequenz durch Drücken von erreicht wird Ctrl+V dann Enter.

1
Olga

Öffnen Sie in Xcode 9 im linken Bereich Ihre Datei in Projektnavigator. Wenn die Datei nicht vorhanden ist, legen Sie das Arzneimittel in den Projektnavigator

Suchen Sie im rechten Bereich nach Text Settings und ändern Sie Line Endings in Windows (CRLF).

XCode screendump  screendump from XCode  

0
matrix3003

Hier ist ein wirklich einfacher Ansatz, der für mich gut funktioniert hat - mit freundlicher Genehmigung Davy Schmeits's Weblog

cat foo | col -b > foo2

Dabei ist foo die Datei mit den Strg + M-Zeichen am Ende der Zeile und foo2 die neue Datei, die Sie erstellen.

0
patdevelop

Erweitere die Antworten von Anne und JosephH und benutze Perl in einem kurzen Perl-Skript, da ich zu faul bin, den Perl-One-Liner sehr zeitweise einzugeben.
Erstellen Sie eine Datei mit dem Namen "unix2dos.pl" und legen Sie sie in einem Verzeichnis in Ihrem Pfad ab. Bearbeiten Sie die Datei so, dass sie die 2 Zeilen enthält:

#!/usr/bin/Perl -wpi
s/\n|\r\n/\r\n/g;

Angenommen, "welches Perl" gibt "/ usr/bin/Perl" auf Ihrem System zurück ... _. Machen Sie die Datei ausführbar (chmod u + x unix2dos.pl).

Beispiel:
$ echo "hallo"> xxx
$ od -c xxx (prüft, ob die Datei mit einer nl endet)
0000000 h e l l o\n 

$ unix2dos.pl xxx
$ od -c xxx (prüft, ob es jetzt in cr lf endet)
0000000 h e l l o\r\n 

0
avy