我有一個從海洋儀器中卸載的文件列表。出於某種原因,偶爾會有一個非ASCII字符插入到ASCII字符應該在的位置。我找到了嚴重的E(È),在那裏應該有一個W來表示西半球的經度記錄。Bash/Linux在.txt文件中查找非ASCII字符並將其替換爲ASCII字符
下面是數據的模樣:
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
我用下面的Bash行能找到非ASCII字符 pcregrep -n '[^\x00-\x7F]' 170510_ocean_Copepod.txt
我想通過一系列文件的循環,發現這些字符,並用'W'替換它們,以便我可以隨後將它們讀入R並集中處理它們。或者,R對嘗試讀取這些文件(「位置中的多字節字符串」)返回的錯誤的解決方法對我的目的同樣有效。任何幫助非常感謝。
你嘗試過什麼到目前爲止,該命令使用
iconv
將文件轉換? –'pcregrep -n'[^ \ x00- \ x7F]'170510_ocean_Copepod.txt | sed's/[^ \ x00- \ x7F]/W/g''但在sed調用中返回一個非法字節序列的錯誤 – SeaSpider
您是否嘗試更改'read.table'的'fileEncoding'參數? – Scarabee