У меня есть файл, содержащий много строк, и я хочу отображать только первое слово каждой строки с командами Linux.
Как я могу это сделать?
У меня есть файл, содержащий много строк, и я хочу отображать только первое слово каждой строки с командами 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