我有一个包含很多行的文件,我想用Linux命令只显示每行的第一个单词。
我该怎么做?
答案 0 :(得分:35)
尝试使用grep执行此操作:
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