我正试图将从终端获得的数据结果保存为.csv文件。
数据是这样的:
1 558
2 576
3 492
...
500 517
有没有可以运行的命令行,这样就可以根据我的数据创建.csv文件?
没有简单的工具可以滚动并选择已经收到的部分输出(当然,如果你愿意,你可以用鼠标选择一些东西,然后复制/粘贴到编辑器中并从那里保存(,但如果你可以再次运行同一命令并获得相同的结果,可以再次运行它并重定向到一个文件,也许只需简单的后处理。
some-command -with arguments -and -options >output.txt
您显示的结果看起来像是制表符分隔的数据,基本上已经是CSV,只使用制表符而不是逗号(TSV(。如果数据中没有其他逗号,tr 't' ','
会将所有选项卡更改为逗号,从而生成CSV文件。
some-command -with arguments -and -options | tr 't' ',' >output.csv
在更复杂的情况下,您可能需要使用各种标准Unix实用程序来执行更复杂的后处理任务。确保您熟悉基本工具(tr
、cut
、paste
等(,至少熟悉标准脚本语言sed
和Awk的基本知识。
最终,您可能想熟悉像Python这样的现代脚本语言,它有一个文档齐全的csv
模块作为其标准库的一部分,并且有一个相当轻松的学习曲线。
如果;数据";在一个文件中,我们假设它包含像您的消息所包含的空间;
编辑
不使用cat:
tr -s " " < <data_file> | sed -n 's/ /,/p' > <any_file_name>.csv
如果你的数据是一个输出,你可以:
<output> | tr -s " " | sed -n 's/ /,/p' > <any_file_name>.csv
编辑前:
cat <data_file> | tr -s " " | sed -n 's/ /,/p' > <any_file_name>.csv
如果您想要任何其他csv文件分隔符,只需更改"期望一个类似";\t〃;或"等
如果你的数据只是一个输出,你可以通过替换cat <data_file>
来进行管道传输,然后像| tr -s " " | ...
一样继续,或者像上面一样将它写入到cat
的文件中。