У меня есть следующие данные в моем файле
alice bob cathy david elon
unix linux bsd
Я хочу вывести данные с только последним N-м экземпляром разделителя (т.е. пробелом).
Как для последнего экземпляра разделителя (пробел)
alice bob cathy david elon
unix linux bsd
или для второго последнего экземпляра разделителя (пробел)
alice bob cathy david elon
unix linux bsd
Когда ваши данные ограничены:
:
perl -F'[:]' -lane '
push @e, join $", splice @F, -1;
push @A, join $", @F;
length($A[-1]) > $maxW and $maxW = length($A[-1])}{
print $_, $" x ($maxW - length), "\t", shift @e for @A;
' file
alice bob cathy david elon
unix linux bsd
если вы хотите, чтобы последние 2 элемента были разделены, измените -1
в списке аргументов splice
на -2
, в результате чего:
alice bob cathy david elon
unix linux bsd
@e
, который содержит последние -N-е элементы для каждой строки. @A
, который содержит каждую h строку после того, как последние -N элементов были удалены из текущей строки.