我有一个包含很多行的文件,我想用 Linux 命令只显示每行的第一个单词。
我怎样才能做到这一点?
尝试使用grep执行此操作:
grep -Eo '^[^ ]+' file
您可以使用awk
:
awk '{print $1}' your_file
这将“打印” 中的第一列 ( $1
) your_file
。
尝试这样做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