Bash 'cut' Mac 命令
Bash 'cut' command for Mac
我要剪切所有带分隔符“:”的内容 输入文件格式如下:
data1:data2
data11:data22
...
我有一个linux命令
cat merged.txt | cut -f1 -d ":" > output.txt
在 mac 终端上出现错误:
cut: stdin: Illegal byte sequence
在 mac 终端上执行此操作的正确方法是什么?
你的 cut 命令在我的 Mac 上对我有用,你可以试试 awk 得到同样的结果
awk -F: '{print }' merged.txt
data1
data11
您的输入文件 (merged.txt) 可能包含 bytes/byte 个在您当前的语言环境中无效的序列。例如,您的语言环境可能指定 UTF-8 字符编码,但文件采用其他编码,无法解析为有效的 UTF-8。如果这是问题所在,您可以通过告诉 tr
假定 "C" 语言环境来解决它,这基本上告诉它将输入作为字节流处理而不注意编码。
顺便说一句,cat file |
就是通常所说的 Cat 无用使用 (UUOC)——您可以只使用标准输入重定向 < file
,这样更干净、更高效。因此,我的命令版本为:
LC_ALL=C cut -f1 -d ":" < merged.txt > output.txt
请注意,由于 LC_ALL=C
赋值是 tr
命令的前缀,它仅适用于该命令,不会混淆 应该 假定为 UTF-8(或任何您的正常语言环境)。
我要剪切所有带分隔符“:”的内容 输入文件格式如下:
data1:data2
data11:data22
...
我有一个linux命令
cat merged.txt | cut -f1 -d ":" > output.txt
在 mac 终端上出现错误:
cut: stdin: Illegal byte sequence
在 mac 终端上执行此操作的正确方法是什么?
你的 cut 命令在我的 Mac 上对我有用,你可以试试 awk 得到同样的结果
awk -F: '{print }' merged.txt
data1
data11
您的输入文件 (merged.txt) 可能包含 bytes/byte 个在您当前的语言环境中无效的序列。例如,您的语言环境可能指定 UTF-8 字符编码,但文件采用其他编码,无法解析为有效的 UTF-8。如果这是问题所在,您可以通过告诉 tr
假定 "C" 语言环境来解决它,这基本上告诉它将输入作为字节流处理而不注意编码。
顺便说一句,cat file |
就是通常所说的 Cat 无用使用 (UUOC)——您可以只使用标准输入重定向 < file
,这样更干净、更高效。因此,我的命令版本为:
LC_ALL=C cut -f1 -d ":" < merged.txt > output.txt
请注意,由于 LC_ALL=C
赋值是 tr
命令的前缀,它仅适用于该命令,不会混淆 应该 假定为 UTF-8(或任何您的正常语言环境)。