簡體   English   中英

如何使用linux命令顯示我文件中每行的第一個單詞?

[英]How to display the first word of each line in my file using the linux commands?

我有一個包含許多行的文件,我想用Linux命令只顯示每行的第一個單詞。

我怎樣才能做到這一點?

嘗試使用執行此操作:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM