結果

結果

私のデータには次のデータがありますfile

alice bob cathy david elon
unix linux bsd

出力が欲しい最後のNインスタンスのみ配列区切り記号(たとえば、スペース)

最後のインスタンス区切り記号(スペース)

alice bob cathy david     elon
unix linux                bsd

または2番目のインスタンス区切り記号(スペース)

alice bob cathy     david elon
unix                linux bsd

答え1

データが次のように区切られている場合:

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現在の行から最後のN個の要素を削除した後、各行を保持する配列を保持します。
  • 我々は、これらのトリムラインの最大幅を決定します。
  • すべての行を読み取った後、切り捨てられた行の長さが同じになるように(右側のパディングスペースの後ろに)+ TAB +最後のN要素を印刷します。

関連情報