我的数据中有以下数据file
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
答案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 个元素。