我有一个包含许多行的文件,我只想用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