Печать первого слова в каждой строке файла txt unix bash
Итак, я пытаюсь напечатать первое слово в каждой строке txt файла. Слова разделяются одним пробелом.
cut -c 1 txt file
Это код, который у меня есть, но он печатает только первый символ каждой строки.
Спасибо
Ответ 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 указать свой разделитель пространства вместо закладки по умолчанию: