У меня есть разделенная пробелами строка, которая выводится командой, которую я люблю передавать по трубам cut
, используя -fd ' '
для разделения на пробелы. Я знаю, что могу использовать -f <n>
для отображения номера поля <n>
, но могу ли я заставить его отображать последнее поле, если я не знаю длину строки?
Или мне нужно использовать более гибкий инструмент для редактирования текста, как sed
или awk
?
command-line
cut-command
Arronical
источник
источник
-n
делает его n с самого начала,n-
с n до конца, и есть--complement
опция, которая изменяет выбор. Но нет никакого способа подсчитать количество полей и действовать, насколько я могу судить.Ответы:
Нет,
cut
не могу этого сделать. Вы можете использовать двеrev
команды, такие какно обычно проще в использовании
awk
:источник
Вы можете сделать это, используя только оболочку, никакой внешний инструмент не требуется, используя Расширение Параметра:
var##*
будет отбрасывать все от начала до последнего пробела от параметра (переменной)var
.Если разделителем может быть любой пробел, например пробел или табуляция, используйте класс символов
[:blank:]
:Пример:
источник
Мне лично нравится Флориан Диш ответ. Но есть и этот способ.
Объяснение:
wc -w
дает количество слов. иcut
режет последнее словоРЕДАКТИРОВАТЬ:
Я понял другой способ сделать это:
источник
a="my string here"
я мог бы также использовать расширение параметров${a##* }
.Вот один, используя
grep
Как это работает:
-o
Печать только совпадающих (непустых) частей совпадающей строки.[^ ]*$
соответствует всему от конца до тех пор, пока не найдет пробел.Еще один лайнер от Гленна Джекмана с использованием Perl
источник