如何用换行符替换制表符分隔的数据?

如何用换行符替换制表符分隔的数据?

我有很多制表符分隔的数据,这意味着当我导入时,我会得到很多列(对于 Google Drive 和 OpenOffice 来说太多了)。

我想我需要做的是找到并替换所有带有换行符的制表符(可能是错误的)。

*编辑 - 我最终用另一种方法解决了这个问题。感谢大家的帮助。:)

答案1

在 OS X 上,您必须使用$''插入\t\n转义来\n替换模式。

echo $'1\t2\n3\t4' | sed $'s/\t/\\\n/g'

但是换行符不是已经在 TSV 文件中分隔了行吗?您也可以使用 TextEdit 将制表符替换为其他字符(例如分号)。

答案2

您可以尝试使用正则表达式:

sed 's/\t/\n/' input.txt > output.txt

这将\t用换行符替换制表符\n

答案3

为了扩展 root 的响应,您实际上可能需要在末尾添加 /g 来执行所有操作。

您还可以将其写入带有自动备份标志的同一个文件。

sed -i.orig 's/\t/\n/g' file.txt

结尾的 /g 将导致它命中每个偶然事件而不是每行第一个事件(如果您需要的话)。

-i.orig 在备份原始文件(本例中为 file.txt.orig)后将更改写入同一文件。这只是我个人的偏好问题,而不是必须重命名原始文件并用新文件代替它。

更新

我附加了一个屏幕截图来显示它为我工作...您确定该文件是制表符划定的吗?

在此处输入图片描述

相关内容