私のデータには次のデータがあります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要素を印刷します。