linux - 使用 sed 或 VIM 将空格替换为新行

标签 linux unix sed vi

我有以下数据。

1455931_at Chrna3 1420468_at Asb17 1445520_at −−− 1436717_x_at Hbb−y 1431788_at Fabp12 1458975_at −−−

sed 或 VIM 编辑器我怎样才能把它改成

1455931_at Chrna3 
1420468_at Asb17 
1445520_at −−− 
1436717_x_at Hbb−y 
1431788_at Fabp12 
1458975_at −−−

因此所有具有_at 的单词都将成为每一行的第一行。 每行由成对的 _at 和基因项组成。

最佳答案

在 Vim 中,我会这样做:

:%s/ /^M/g
:g/_at/j

^M 是通过按 control-V(Windows 上的 control-Q)然后按 Enter/Return 键输入的。

这假定标记之间有单个空格;正如@Floris 建议的那样,您可以使用 s/\+/^M/g 将多个连续空格转换为单个换行符。或者您可以使用 s/\v\s+/^M/g 对任何连续的空格(包括制表符和文字空格字符)执行相同的操作。

关于linux - 使用 sed 或 VIM 将空格替换为新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20510302/

相关文章:

计算读取操作返回的字节数

linux - 将一列拆分为多行

sed - 使用 sed 将值替换为 ascii 字符

linux - "You don' t have [ ] in your PATH,"but is in [echo $PATH] (Linux)

ruby - nohup 下奇怪的 Ruby 输出滞后?

linux - kvm中hypercalls的入口在哪里?

unix - 如何转换为零字节文件?

linux - Linux上的ACL对性能有影响吗

c++ - 这是我在 XCode 中将 boost/filesystem 加入我的 C++ 程序的最后一次尝试

bash - 使用 sed (或类似的东西)修改变量的内容