我有数据集如下:Unix的分裂1个栏为两列
item gram
tomato 500
orange 1500
bread 2000
现在,他们似乎要分离如图所示(例如,番茄500,不tomato500),但它们都在一列当我做一个CSV文件。我想要的物品进入一列克进入另一列是:
item gram
tomato 500
orange 1500
bread 2000
我有数据集如下:Unix的分裂1个栏为两列
item gram
tomato 500
orange 1500
bread 2000
现在,他们似乎要分离如图所示(例如,番茄500,不tomato500),但它们都在一列当我做一个CSV文件。我想要的物品进入一列克进入另一列是:
item gram
tomato 500
orange 1500
bread 2000
要改变的空间运行的标签,
tr -s ' ' $'\t' <old.txt >new.tsv
其中old.txt
是输入文件和new.tsv
包含新从tr
输出。
您的示例显示了一些值之间的多个空格。如果您始终只有一个值之间的空格,或者想要将n空格更改为n选项卡,请取出-s
(尽管当然在前一种情况下,它并不重要)。
$'\t'
是一个(仅限Bash)引用机制,它允许您将文字标签作为参数传递。 tr
对此没有完全便携的语法,但您也可以在大多数现代系统上使用'\t'
。
tr
的第二个参数指定了用作新分隔符的字符。我选择了tab作为分隔符,因为这是Excel预期的,因为它(有点困惑地)称我上次看到的是“Unix”文件。要使用逗号(用于正确的CSV)或分号(在某些语言环境中明显优先于逗号,因为它们使用逗号作为数字中的小数分隔符;即使Excel仍称CSV格式),使用','
或3210作为第二个参数,分别。 (单引号对于防止shell执行任何解释很重要,例如,分号字符是shell中的命令分隔符,所以如果您忘记引用它,会得到一个令人困惑的错误消息。)
tr
uncoditionally替换您指定的字符的所有实例。如果您想要更详细的控制(有条件或取决于上下文的替换),则需要更复杂的工具,如sed
。
CSV格式的细节实际上相当复杂,甚至在不同版本的Excel之间也有几种方言,所以如果您的真实数据比您的示例更复杂,您可能需要尝试一下。
你正在使用哪个软件,或者哪个程序应该查看resultung csv?我认为你只需要指定正确的字段分隔符(它似乎是空格或制表符)。 –
我需要在Excel中创建两列的表,所以我想创建一个csv文件。 – reader
Excel提供详细的控制如何“解释”文本数据。功能区中有一个图标称为导入文本数据。 您将剪贴板中的内容复制/粘贴到excel中,它会被当前活动的任何设置解释,并且整个文本仍处于选中状态。 现在您可以找到并单击该按钮来更改设置: 1.不固定但由字符分隔 2.在下一步中选择空格或制表符。 Excel将更改后的设置应用于所选文本,从而将其分为两列(检查出来,比使用它更容易描述:))。 –