管道 (|) 有限的文本文件从 Windows 应用程序传输以进行处理。处理时,文件第一行的第一列中有一个特殊字符。这是从 Windows 传输之前文件在记事本中的外观
Sector|Name|Manager|...
当我阅读IFS='|' read -r -a fields < "/uploads/file_data.txt"
时,第一列扇区被读取为"Sector"
带有前缀的特殊字符。
当我这样做时head -1 "/uploads/file_data.txt" | od -c
,打印的值是
0000000 357 273 277 S e c t o r |
我试过tr -d < //uploads/file_data.txt > /uploads/file_data_temp.txt
但没有帮助。如果将来上传的文件中有任何未知字符,我如何替换特殊字符不仅如此。
您可能有一个“bom”(字节顺序标记,用于基于 unicode 语言环境的系统来指定系统的“小端”/“大端”
见https://en.wikipedia.org/wiki/Byte_order_mark
值得庆幸的是,这似乎是针对 utf-8 语言环境的,如果您只期望 ASCII 1-177 字符,这是一件好事......
你可以通过插入一个被迫使用(暂时)C语言环境的sed来“看到”这个:
例如用作: