如何使用linux命令显示我文件中每行的第一个单词?

时间:2013-03-15 14:18:56

标签: linux shell grep

我有一个包含很多行的文件,我想用Linux命令只显示每行的第一个单词。

我该怎么做?

6 个答案:

答案 0 :(得分:35)

尝试使用执行此操作:

grep -Eo '^[^ ]+' file

答案 1 :(得分:32)

您可以使用awk

awk '{print $1}' your_file

这将“打印”$1中的第一列(your_file)。

答案 2 :(得分:8)

尝试使用coreutils cut

执行此操作
cut -d' ' -f1 file

答案 3 :(得分:3)

我看到已经有了答案。但您也可以使用sed执行此操作:

sed 's/ .*//' fileName

答案 4 :(得分:1)

上述解决方案似乎符合您的具体情况。对于问题的更一般应用,请考虑单词通常被定义为由空格分隔,但不一定是空格字符。例如,文件中的列可以以制表符分隔,或者甚至由制表符和空格的混合分隔。

前面的示例对于查找以空格分隔的单词都很有用,而只有awk示例还可以找到由其他空格字符分隔的单词(事实上,这在各种sed / grep版本中统一执行相当困难) 。您可能还希望通过修改awk语句显式地跳过空行:

awk '{if ($1 !="") print $1}' your_file

如果您还担心空字段的可能性,即开头的行,则会有一个更健壮的解决方案。我不是很熟悉awk为这种情况生成一个单行程,但是一个简短的python脚本可以实现这个技巧:

>>> import re
>>> for line in open('your_file'):
...     words = re.split(r'\s', line)
...     if words and words[0]:
...         print words[0]

答案 5 :(得分:0)

...或在Windows上(如果你有GnuWin32 grep):

grep -Eo "^[^ ]+" file