Windows/Linux file reading with regexp inconsistency?
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Zhangxi Feng
am 8 Okt. 2019
Kommentiert: Walter Roberson
am 9 Okt. 2019
In my program, I am reading an input text file using the following code:
file = fileread(GAFname);
fileText = regexp(file, '\r\n|\r|\n', 'split')';
The text file can be anything, in this case let's use:
A
B
C
D
E
The text file is created in windows using notepad++. When executing this code on windows, it splits up file into 5x1 cells perfectly. But when the same files are transferred to a Linux workstation, it suddenly makes a 6x1 cell array with the last one being empty.
Does anyone know if this is related to regexp, creation of the text file (i.e. windows vs linux in terms of \r and \n), or is this caused by something else? Could it be because the version of MATLAB on the Linux workstation is 2018b?
I tried the following: I copied all but the last line into a Linux text editor and then manually entered the last line in the Linux editor then saved. It does not fix the problem so maybe it is not due to windows vs Linux text editors.
Thanks!
Jesse
0 Kommentare
Akzeptierte Antwort
Walter Roberson
am 8 Okt. 2019
An empty one at the end is expected if the file ends with newline. It is the old question of whether newline is the line terminator or the line separator. The unix specs are clear that it is a separator. The Windows specs for text mode with CR+LF were traditionally that it was a terminator.
4 Kommentare
Walter Roberson
am 9 Okt. 2019
Just assume that the file might or might not end in linefeed no matter how you read it, so do the test for isempty that I show.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Live Scripts and Functions finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!