使用 vim 处理文本文件中的 \r \n ^M ​​^@

2024-04-18

当我将 excel 文件中的数据行保存为制表符分隔的 .txt 文件,然后在 VIM 中打开这些文件时,我发现 excel 中曾经的多行文件现在是 VIM 中的单行文件。

可以使用一些替换命令在 VIM 中分隔“行”:

%s/^M/\r\n/g

此后,“线”现在由一个分隔^@。 我使用另一个替换命令来处理它:

%s/^@//g

我的问题是:

  1. 为什么我的多行 txt Excel 文件在 VI 中打开为单行?
  2. What is ^@?
  3. 有没有更好的方法来“修复”我的 txt 文件?

您通常可以通过运行以下命令来修复此类问题:

dos2unix FILE_NAME

这将重新格式化文件的换行符(即它将修改您的文件)。

(Mac OS X 上不存在此命令)


如果你没有 dos2unix (例如你使用的是 Mac),你可以只使用 sed:

sed 's/^M$//' input.txt > output.txt

您还可以使用sed -i如果您想通过执行替换来避免创建新文件in place.

You can enter ^M by typing CTRLV followed by CTRLM

更多阅读这里 http://www.xappsoftware.com/wordpress/2009/04/09/dos2unix-using-sed-how-to-remove-m-chars-from-a-dos-file/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 vim 处理文本文件中的 \r \n ^M ​​^@ 的相关文章

  • 如何跳转到 vim 中不同选项卡内的标记?

    我使用 MacVim 通常会打开许多 选项卡 我希望能够在任何打开的文件中放置标记并在它们之间跳转 mK and K当标记位于同一个选项卡中时效果很好 但我必须使用gt找到选项卡 然后K找到标记 一定有更好的方法吗 这是一个快速而肮脏的技巧
  • 减少单元格中/chr(10) 的换行数

    我有一张 Excel 工作表 其中的单元格具有不同数量的换行符 我想减少它 以便每个新行之间只有一个换行符 例如 HELLO WORLD GOODBYE 将修改为 HELLO WORLD GOODBYE 我已经为此绞尽脑汁好几个小时了 并想
  • 为 Vim 命令行创建一个映射,在插入寄存器之前转义寄存器的内容

    假设我有一个这样的文档 并且我想搜索所有出现的 URL Vim resources http example com search q vim q q http example com search q vim 我不想完整地输入它 所以我将
  • 通过 Homebrew 安装 Vim,并支持 Python 和 Python3

    我想在 Vim 中启用 Python 自动完成功能 所以也许这不是问题 这是我观察到的 First 虚拟环境 https github com kennethreitz python guide blob master docs dev v
  • Vim:用字符填充行

    如何在一行或多行末尾重复添加字符 将行填充到特定列 例如 x 代表第 40 列 不是该行上的字符 并且文本后没有空格或制表符 line one x line two x line three x line eleventy billion
  • Emacs Evil“重复”(点)行为

    我的中有以下行 emacs define key evil normal state map M j lambda interactive evil next line 5 这使得文件中的导航变得更加容易 例如 与M j我在下面 5 行 所
  • 选项卡视觉选择

    In many GUIs when I select a section of text and then hit the Tab or Shift Tab button the selected section will indent i
  • Java更改系统换行符

    在 Windows 上 使用System out println 打印出来 n r而在 Unix 系统上你会得到 n 有没有办法告诉java你想使用什么换行符 正如其他人已经说过的 系统属性line separator包含实际的行分隔符 奇
  • 用 SED 或 PERL 单行匹配并替换多个换行符

    我有一个输入 C 文件 myfile c 如下所示 void func foo void func bar supercrazytag 我想使用 shell 命令插入新的函数原型 这样输出就变成 void func foo void fun
  • 如何在vim中的相同行数前面插入多行?

    假设我有两个文本块 其中之一在我的剪贴板中 one two three 另一个位于我正在 vim 中编辑的文件中 AAA BBB CCC 如何在第二个块前面插入第一个块以获得以下结果 oneAAA twoBBB threeCCC 我希望有一
  • 从文件中读取第n行的快速方法

    介绍 我有一个名为的 C 进程MyProcess我称之为nbLines时间 地点nbLines是一个名为的大文件的行数InputDataFile txt在其中可以找到输入数据 例如调用 MyProcess InputDataFile txt
  • 使用 .gitattributes 强制 LF 行结尾而不丢失自动文本/二进制推理?

    我想用eol LF在我的 gitattributes 文件中 但我希望它适用onlyGit 自动将文件确定为文本文件 我能找到的最好的方法是将特定的文件扩展名 全局定义为文本或二进制 这并不理想 因为列表可能很大 我试过了 text aut
  • 我可以使用 VIM 查看 Python 中函数的文档字符串吗?

    在 VIM 中编写 Python 时 有什么方法可以查看函数的文档字符串吗 例如 def MyFunction spam A function that foobars the spam returns eggs return foobar
  • 当vim进入可视模式时运行命令

    我使用一个小脚本来触发插入模式以更改行号颜色 function CursorLineNrColorInsert mode Insert mode blue if a mode i highlight CursorLineNr ctermfg
  • Foldmethod=同时标记和语法?

    同一文件是否可以根据标记和语法使用折叠 Since foldmethod一次只能设置为一个 我认为您真正可以做到这一点的唯一方法是使用 set foldmethod expr并与foldexpr 即使如此 我也不确定它是否能够完全按照您的要
  • Redhat Vim 中的可视化块插入

    我的 ec2 服务器附带了 redhat vim ec2 user vim version VIM Vi IMproved 7 2 2008 Aug 9 compiled Jul 7 2012 08 03 48 Included patch
  • 如何使用 tmuxinator 在 tmux 中拆分水平窗格内的两个垂直窗格

    目前我的 tmuxinator yml 文件中有这个 windows editor layout main horizontal panes vim server rails s 这给了我两个窗口 一个用于编辑器 另一个用于服务器 在编辑器
  • 禁用 VIM 中的警告?

    有没有办法禁用 VIM 中的警告 特别是 当文件从只读变为可写时 我想禁用警告 12 我有一个脚本可以打开文件进行编辑 但 vim 认为文件已更改并发出警告 Thanks 我的 vimrc 中有以下内容 你应该只需要第二个 它将消息回显到状
  • svn:使用vim合并冲突

    我正在尝试看看如何使 svn 中的合并变得容易 This page http svnbook red bean com en 1 7 svn advanced externaldifftools html提到可以使用外部工具进行合并 vim
  • 将 vim 的 vertsplit 字符更改为 │

    我认为这与代码页相关 但询问也无妨 在 windows xp 的 cmd 上 gvim 7 2 如何更改 vertsplit 字符 而不是默认的 它是 因此它是一条完整的线 而不是一条分割线 该字符通常会更改为 set fillchars

随机推荐