Подтвердить что ты не робот

Печать первого слова в каждой строке файла txt unix bash

Итак, я пытаюсь напечатать первое слово в каждой строке txt файла. Слова разделяются одним пробелом.

cut -c 1 txt file 

Это код, который у меня есть, но он печатает только первый символ каждой строки. Спасибо

4b9b3361

Ответ 1

Чтобы напечатать целые слова, вы хотите -f 1, а не -c 1. И поскольку разделитель поля по умолчанию - это TAB, а не SPACE, вам нужно использовать опцию -d.

cut -d' ' -f1 filename

Чтобы напечатать последние два слова, которые невозможно сделать с помощью cut, AFAIK, потому что он может рассчитывать только с начала строки. Вместо этого используйте awk:

awk '{print $(NF-1), $NF;}' filename

Ответ 2

вы можете попробовать

awk '{print $1}' your_file

Ответ 3

read word _ < file
echo "$word"

Что приятно в этом решении, оно не читается за пределами первой строки файла. Даже awk, у которого есть очень чистый, краткий синтаксис, должно быть явно сказано прекратить чтение за первой строкой. read просто читает по одной строке за раз. Кроме того, это bash встроенный (и встроенный в множество оболочек), поэтому вам не нужен новый процесс для запуска.

Если вы хотите напечатать первое слово в каждой строке:

while read word _; do printf '%s\n' "$word"; done < file

Но если файл большой, тогда awk или cut победят для чтения каждой строки.

Ответ 4

-c для символов, вы хотите -f для полей и -d указать свой разделитель пространства вместо закладки по умолчанию:

cut -d " " -f 1 file