我的数据集如下:
item gram
tomato 500
orange 1500
bread 2000
现在它们似乎如图所示分开(例如,番茄500,而不是番茄500),但是当我制作csv文件时它们都在一列中。我希望项目进入一列,克进入另一列:
item gram
tomato 500
orange 1500
bread 2000
答案 0 :(得分:0)
要将空格运行更改为选项卡,
tr -s ' ' $'\t' <old.txt >new.tsv
其中old.txt
是您的输入文件,new.tsv
包含tr
的新输出。
您的示例显示了某些值之间的多个空格。如果您在值之间始终只有一个空格,或者想要将 n 空格更改为 n 标签,请取出-s
(当然在前一种情况下) ,它并不重要。)
$'\t'
是一种(仅限Bash)引用机制,允许您将文字选项卡作为参数传递。 tr
没有完全可移植的语法,但您也可以在大多数现代系统上使用'\t'
。
tr
的第二个参数指定要用作新分隔符的字符。我选择tab作为分隔符,因为这是Excel所期望的(有点混乱)调用&#34; Unix&#34;我上次看的文件。要使用逗号(用于正确的CSV)或分号(在某些区域设置中显然优先于逗号,因为它们使用逗号作为数字中的小数分隔符;即使Excel仍调用格式CSV),请使用','
或{{ 1}}分别作为第二个参数。
(单引号对于防止shell执行任何解释很重要。例如,分号字符是shell中的命令分隔符,因此如果忘记引用它,您将收到一条相当令人困惑的错误消息。)< / p>
';'
uncoditionally替换您指定的所有字符实例。如果您想要更详细的控制(条件或依赖于上下文的替换),您需要一个更复杂的工具,如tr
。
CSV格式的细节实际上相当复杂,甚至在不同版本的Excel之间也有多种方言,因此如果您的实际数据比您的示例更复杂,您可能需要进行一些实验。