Вырезать последнее слово linux
У меня есть текст (многострочный, на кириллице). Каким образом (не используя awk) можно вырезать последнее слово в каждой строке и вывести их в терминал или в файл?
P.S.: попросили уточнить. Удалить последнее слово в каждой строке и вывести все их (удалённые слова) в терминале
Ответы (3 шт):
Автор решения: user207200
→ Ссылка
Файл для примера:
python -m this > testfile && cat testfile
The Zen of Python, by Tim Peters Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex. Complex is better than complicated. Flat is better than nested. Sparse is better than dense. Readability counts. Special cases aren't special enough to break the rules. Although practicality beats purity. Errors should never pass silently. Unless explicitly silenced. In the face of ambiguity, refuse the temptation to guess. There should be one-- and preferably only one --obvious way to do it. Although that way may not be obvious at first unless you're Dutch. Now is better than never. Although never is often better than *right* now. If the implementation is hard to explain, it's a bad idea. If the implementation is easy to explain, it may be a good idea. Namespaces are one honking great idea -- let's do more of those!
Возможно, не самый лучший вариант: разворачиваем строку, разбиваем ее по пробельному символу, берем первое слово, разворачиваем обратно. Так как в этом примере есть знаки препинания, удаляем их.
rev testfile | cut -d " " -f1 | rev | tr -d ".!"
Peters ugly implicit complex complicated nested dense counts rules purity silently silenced guess it Dutch never now idea idea those
Автор решения: aa.arsenenko
→ Ссылка
cat file.txt
The Zen of Python, by Tim Peters
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
sed 's/[^ ]*$//' file.txt > file.2.txt
cat file2.txt
The Zen of Python, by Tim
Beautiful is better than
Explicit is better than
Simple is better than
Complex is better than
Flat is better than
Sparse is better than
Readability
grep -oE '[^ ]+$' file.txt > file3.txt
cat file3.txt
Peters
ugly.
implicit.
complex.
complicated.
nested.
dense.
counts.
Автор решения: Stanislav Volodarskiy
→ Ссылка
grep и tr
Русская классика:
$ cat testfile
Белеет парус одинокой
В тумане моря голубом!..
Что ищет он в стране далекой?
Что кинул он в краю родном?...
Играют волны — ветер свищет,
И мачта гнется и скрыпит...
Увы! он счастия не ищет
И не от счастия бежит!
Под ним струя светлей лазури,
Над ним луч солнца золотой...
А он, мятежный, просит бури,
Как будто в бурях есть покой!
grep выделяет последнее непустое слово:
$ cat testfile | grep -o '[^[:space:]]*[[:space:]]*$'
одинокой
голубом!..
далекой?
родном?...
свищет,
скрыпит...
ищет
бежит!
лазури,
золотой...
бури,
покой!
tr отрезает знаки препинания и пробелы в конце строки:
$ cat testfile | grep -o '[^[:space:]]*[[:space:]]*$' | tr -d [:punct:][:blank:]
одинокой
голубом
далекой
родном
свищет
скрыпит
ищет
бежит
лазури
золотой
бури
покой