J'ai une liste de fichiers déchargés d'instruments océanographiques. Pour une raison quelconque, il y a parfois un caractère non-ASCII inséré où un caractère ASCII devrait être. J'ai trouvé la tombe-E (È) où il devrait y avoir un W pour désigner l'hémisphère occidental dans les enregistrements de longitude.Bash/Linux Trouver un caractère non-ASCII dans un fichier .txt et le remplacer par un caractère ASCII
Voici ce que les données ressemble à:
CUMSECS Date UTC Time UTC Date Local Time local Z (m) Target Z Z Bot Temp PAR Salin Ang VelX Ang VelY Ang VelZ Pump + Pump - Gctr Fix secs Date UTC Time UTC Date Local Time Local Lat LatD Latm Lon LonD Lonm DOP Temp PAR Salin Batt V CMD secs Date Local Time Local No. Cmds
526068034 09/01/16 18:00:34 09/01/16 11:00:34 3.75 2.69
3.75 0.29 0.000000 0.00 -12 -70 -50 0 5 10
526068039 09/01/16 18:00:39 09/01/16 11:00:39 3.75 2.69
3.75 0.29 0.000000 0.00 -12 -70 -50 0 5 10
526068044 09/01/16 18:00:44 09/01/16 11:00:44 3.74 2.69
3.75 0.29 0.000000 0.00 -12 -70 -50 0 5 10
526068049 09/01/16 18:00:49 09/01/16 11:00:49 3.73 2.69
3.75 0.29 0.000000 0.00 -30732 13588 31909 60399 7538 -82
543622771 03/23/17 22:19:31 03/23/17 15:19:31 38.31877 38
19.1262 N 123.07136 123 4.2812 È 23.6 115.06 0.0000 96.00
121.718
547764151 05/10/17 20:42:31 05/10/17 13:42:31 0.03 16.00
127.00 13.68 1074.904320 33.56 -4908 -3976 261 1 0 0
547764152 05/10/17 20:42:32 05/10/17 13:42:32 0.00 16.00
127.00 13.68 1074.904320 33.56 -4908 -3976 261 1 0 0
je peux trouver les caractères non-ASCII en utilisant la ligne Bash suivante pcregrep -n '[^\x00-\x7F]' 170510_ocean_Copepod.txt
Je voudrais faire une boucle à travers une série de fichiers, trouver ces les caractères, et les remplacer par un «W» afin que je puisse ensuite les lire dans R et les traiter en masse. Sinon, une solution de contournement à l'erreur retournée par R en essayant de lire ces fichiers ("chaîne multi-octets dans l'emplacement ...") serait tout aussi efficace pour mes fins. Toute aide très appréciée.
Qu'avez-vous essayé jusqu'à présent? –
'pcregrep -n '[^ \ x00- \ x7F]' 170510_ocean_Copepod.txt | sed 's/[^ \ x00- \ x7F]/W/g' 'mais cela renvoie une erreur sur l'appel sed pour une séquence d'octets illégale – SeaSpider
Avez-vous essayé de changer l'argument' fileEncoding' de 'read.table'? – Scarabee