如何使用vi删除文本文件中每行的前5个字符?

Emm*_*mmy 31 regex unix vi text command

如何删除文本文件中每行的前5个字符?
我有这样一个文件:

   4 Alabama
   4 Alaska
   4 Arizona
   4 Arkansas
   4 California
  54 Can
   8 Carolina
   4 Colorado
   4 Connecticut
   8 Dakota
   4 Delaware
  97 Do
   4 Florida
   4 Hampshire
  47 Have
   4 Hawaii
Run Code Online (Sandbox Code Playgroud)

我想删除txt文件中每行开头的数字和空格.

lar*_*red 78

:%s/^.\{0,5\}//应该做的伎俩.它还处理少于5个字符的情况.

  • 谢谢,但我需要添加一个“g”才能使其工作。`:%s/^.\{0,5\}//g` (2认同)

Bar*_*mar 12

使用正则表达式^.....匹配每行的前5个字符.在全局替换中使用它:

:%s/^.....//
Run Code Online (Sandbox Code Playgroud)

  • 实际上巴马尔意味着正则表达式匹配 - 它正在被取代.`^`匹配行的开头,`.`匹配任何字符.`:s`命令用第一个和第二个斜杠之间的整个匹配(在这种情况下,在行的开头有五个,可能是不同的字符)替换最后两个斜杠之间的内容 - 没有,有效地删除它们. (5认同)

小智 5

由于所有行都已对齐,因此您无需替换即可解决此问题。只需将光标移到左上角的位置(gg),然后:CTRL + vGwlx

  • 这是正确答案。上面的正则表达式答案对于这个问题的简单性来说太过分了。更简单地说,块状视觉选择要删除的文本(ctrl+`v` + 移动,`G` 转到文件末尾,`l` 几次移动选择以包含要删除的所有内容)和`x ` 删除。 (4认同)

Bed*_*mez 5

我认为最简单的方法是使用剪切。

只需输入cut -c n- <filename>