小编Pat*_*Pat的帖子

根据file命令将文件转换为utf-8

有一个上传过程,读取文件并使用 sqlldr 将数据上传到数据库。我在 sqlldr 中处理文件时遇到无效号码问题。发现文件是UTF-16格式,然后在notepad++中转换为UTF-8格式,它开始正常工作。现在我正在尝试系统地转换它,如下所示。

iconv -f UTF-16 -t UTF-8 file_name >output_file_name
Run Code Online (Sandbox Code Playgroud)

该文件可能具有不同的编码,因此我想在转换之前找到该文件的编码,然后根据该编码进行转换。例如使用 file 命令仅从下面读取 UTF-16,然后在 -f 选项中使用它。

bash-4.2$ file "/FILE_UPLOADS/Relationship (4).txt"
/FILE_UPLOADS/Relationship (4).txt: Little-endian UTF-16 Unicode text, with CRLF line terminators
Run Code Online (Sandbox Code Playgroud)

我怎么做?

ksh

6
推荐指数
2
解决办法
6326
查看次数

bash 替换变量中的特殊字符

管道 (|) 限制文本文件从 Windows 应用程序传输以进行处理。处理时,文件第一行的第一列中有一个特殊字符。\n这是从 Windows 传输之前文件在记事本中的外观

\n
Sector|Name|Manager|...\n
Run Code Online (Sandbox Code Playgroud)\n

当我读取时IFS='|' read -r -a fields < "/uploads/file_data.txt",第一列扇区被读取为"\xc3\xaf\xc2\xbb\xc2\xbfSector"带有特殊字符前缀。

\n

当我这样做时,head -1 "/uploads/file_data.txt" | od -c打印的值是

\n
0000000 357 273 277   S   e   c   t   o   r   |\n
Run Code Online (Sandbox Code Playgroud)\n

我尝试过tr -d < //uploads/file_data.txt > /uploads/file_data_temp.txt但没有帮助。如果将来上传的文件中有任何未知字符,我该如何替换特殊字符?

\n

bash ksh

4
推荐指数
1
解决办法
686
查看次数

读取第 n 行并拆分为数组

尝试从文件中读取第 n 行并根据分隔符拆分为数组

HEAD_START=4
IFS='|' read -r -a headers < sed "${HEAD_START}q;d" "/FILE_UPLOADS/Checklist-Relationship (4).txt"
Run Code Online (Sandbox Code Playgroud)

上面给出"sed: cannot open [No such file or directory]"

但是当我sed "${HEAD_START}q;d" "/FILE_UPLOADS/Checklist-Relationship (4).txt"在提示符下运行时它工作正常

bash sed

2
推荐指数
1
解决办法
177
查看次数

标签 统计

bash ×2

ksh ×2

sed ×1