正则表达式删除字符空格以后的各线

问题描述:

我有50K线这样正则表达式删除字符空格以后的各线

word1 1 23 
word2 43 23 
word3 197 
word4 

一个文本文件,并需要一种方法来使它看起来像这样:

word1 
word2 
word3 
word4 

所以我需要一个删除每行第一个空格后面的每个字符的方法。 我该怎么做?

+1

正则表达式是*匹配*文本的方法。如果您想要使用该文本执行某些操作(例如将其删除),则需要在某种语言或软件中使用正则表达式函数。你的环境是什么?我们在PHP/Python/Perl吗? VI? Unix命令行? Adobe Dreamweaver? – ghoti 2012-07-14 12:30:24

多种解决方案。

解决方案1:Vim的

开启在vim的文件,然后运行:

:%s/\s.*//g

解决方案2:用sed

sed "s/ .*//g" <input_file> output_file

无法在Windows上执行此操作。

解决方案3:EXCEL /计算器/数字

在导入的OpenOffice /的MSOffice的/ etc文件。
您可以将空间设置为分隔符。
但这是一个更慢,更少乐趣。 :)

+0

谢谢,你的回答很好。在这种情况下,我甚至可能更喜欢那种不太好玩的方式。 ;)我无法弄清楚如何将分隔符设置为空格。它只是导入第一列中的每一行。 – Stacksatty 2012-07-14 11:39:24

如果是一次性的,我会建议使用excel或电子表格来做到这一点。

只需导入一个文件,并将分隔符设置为空格字符。然后,您可以删除第一列以外的所有文件,然后再次保存为文本文件。

+0

是的,这是一次性的。我试着用Excel导入txt文件,但它没有用空格分隔单词。你能解释如何做到这一点?对不起,我不经常使用Excel或Regex。 – Stacksatty 2012-07-14 11:34:19

[[email protected] ~]$ cat input.txt 
word1 1 23 
word2 43 23 
word3 197 
word4 
[[email protected] ~]$ awk '{print $1}' input.txt 
word1 
word2 
word3 
word4 
[[email protected] ~]$ sed 's/ .*//' input.txt 
word1 
word2 
word3 
word4 
[[email protected] ~]$ cut -d\ -f1 input.txt 
word1 
word2 
word3 
word4 
[[email protected] ~]$ 
+0

upvoted for extra'cut' case :) – Prody 2012-07-14 12:45:17

+0

有时我希望我还在使用Linux。 :) 感谢你们! – Stacksatty 2012-07-14 13:08:21