Как отобразить первое слово каждой строки в моем файле с помощью команд linux?

У меня есть файл, содержащий много строк, и я хочу отображать только первое слово каждой строки с командами Linux.

Как я могу это сделать?

Ответ 1

Попробуйте сделать это с помощью :

grep -Eo '^[^ ]+' file

Ответ 2

Вы можете использовать awk:

awk '{print $1}' your_file

Это будет "печатать" первый столбец ($1) в your_file.

Ответ 3

попробуйте сделать это с помощью coreutils cut:

cut -d' ' -f1 file

Ответ 4

Я вижу, что уже есть ответы. Но вы также можете сделать это с помощью sed:

sed 's/ .*//' fileName

Ответ 5

Вышеупомянутые решения, похоже, соответствуют вашему конкретному случаю. Для более общего применения вашего вопроса подумайте, что слова обычно определяются как разделенные пробелами, но не обязательно пробельные символы. Столбцы в вашем файле могут быть разделены на вкладку, например, или даже разделены смесью вкладок и пробелов.

Предыдущие примеры полезны для поиска слов, разделенных пробелами, в то время как только пример 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]

Ответ 6

... или в Windows (если у вас есть GnuWin32 grep):

grep -Eo "^[^ ]+" file