【问题标题】:Replace spaces characters by a hard tab in a 6 GB file on Linux在 Linux 上用硬制表符替换 6 GB 文件中的空格字符
【发布时间】:2011-10-06 15:32:31
【问题描述】:

我有一个 vi 命令用硬制表符替换空格字符:

     vi myfile.txt
       : # To go to the last line 
          1,$s/ /\t/g   # Then I type in this to replace spaces by a tab

我该如何使用AWKsed

【问题讨论】:

  • 不是很相关,但您确定要用制表符替换每个空格吗?如果用于格式化,通常用制表符替换每 2 个或每 4 个空格是有意义的。
  • @madkitty- 我有点感兴趣。这个6GB的文件是纯文本吗?
  • 这是一个 6Gb 的纯文本文件,应该组织成四列,以便稍后插入 MySQL 表。问题已解决,但如果你有更好的主意,请告诉我:) Thnkx

标签: linux replace sed awk vi


【解决方案1】:

几乎与sed 相同,只需使用真实标签而不是\t

$ sed 's/ /  /g' < input_file > output_file
# a tab ---^^

如果您是从 bash 命令行执行此操作,则需要执行 Ctrl-VTab 对来获取选项卡。

【讨论】:

  • 等等 .. 我必须输入$ sed 's/ /\t/g' 这会起作用吗? ^^ 我不需要先用编辑器打开文件? (像vi)还是我应该在语法中的某处写文件名?~~~~~~
  • @madkitty:“sed”代表“流编辑器”,因此您可以通过它流式传输数据,而无需将整个内容加载到内存中。我添加了一些更新,可能会澄清一些事情。
  • 哈~~~~~~现在我明白了 谢谢XD ^^ ~~~~~
  • 好吧,我只是这样做了,但缩进不一致..我似乎无法用 vi 得到相同的结果......也许是另一种解决方案?
  • 哦,你通过 Ctrl-V Tab 对来获得一个标签是什么意思?这会取代 \t 吗?
【解决方案2】:

除非您严格要求sed/awk,否则tr 是最好的选择:

tr ' ' '\t'  < inputfile > outputfile

【讨论】:

  • 哦,谢谢,我现在正在尝试 tr 我们的文件之一,如果缩进更一致,会让你。谢谢 :)
猜你喜欢
  • 1970-01-01
  • 2017-07-06
  • 2020-03-11
  • 2021-08-24
  • 1970-01-01
  • 2015-04-06
  • 1970-01-01
  • 2010-09-30
  • 1970-01-01
相关资源
最近更新 更多