我想用定界线切割所有内容:"输入文件的格式为:
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