适用于 Mac 的 Bash 'cut' 命令



我想用定界线切割所有内容:"输入文件的格式为:

data1:data2
data11:data22
...

我有一个linux命令

cat merged.txt | cut -f1 -d ":" > output.txt

在Mac终端上给出了一个错误:

cut: stdin: Illegal byte sequence

在Mac终端上执行的正确方法是什么?

您的输入文件(MERGED.TXT(可能包含当前语言环境中无效的字节/字节序列。例如,您的语言环境可能会指定UTF-8字符编码,但是该文件是在其他编码中,并且不能解析为有效的UTF-8。如果这是问题的话,您可以通过告诉tr假设" C"语言环境来解决它,该语言基本上告诉其将输入作为字节流处理而不注意编码。

btw,cat file |通常称为CAT(UUOC(的无用用途 - 您可以使用标准输入重定向< file,更清洁,更有效。因此,我的命令版本将是:

LC_ALL=C cut -f1 -d ":" < merged.txt > output.txt

请注意,由于LC_ALL=C分配是tr命令的前缀,因此它仅适用于该命令,并且不会弄乱其他操作,应该假设UTF-8(或任何正常的正常操作LOCALE是(。

您的cut命令在我的Mac上适用于我,您可以尝试相同的结果

awk -F: '{print $1}' merged.txt
data1
data11

最新更新