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

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

我怎样才能做到这一点?

尝试使用grep来做这个:

grep -Eo '^[^ ]+' file 

你可以使用awk

 awk '{print $1}' your_file 

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

尝试使用coreutils cut

 cut -d' ' -f1 file 

我看到已经有答案了。 但是你也可以用sed来做到这一点:

 sed 's/ .*//' fileName 

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

前面的例子对找到空格分隔的单词都很有用,而只有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] 

…或在Windows上(如果您有GnuWin32 grep):

 grep -Eo "^[^ ]+" file