nushell:向表中添加计算列

nushell:向表中添加计算列

如何在 nushell 中的表中添加一列,该列根据其他列计算其值?

例如,我想将“名称”列拆分为“无名称的路径”和“本地名称” ls -a -f **/*,通过添加这两列并删除原始的“名称”列。

官方文档有一节添加新列。但它解释了如何添加行,而不是列。甚至还有一个GitHub 问题对于这种混淆,但它仍然开放。

答案1

insert尽管书中的例子令人困惑,但我相信这确实就是你所寻找的。

尝试:

ls -af **/* | insert path { $in.name | path dirname } | update name { $in.name | path basename }

这会插入一个新path列并更新(而不是删除)现有name列以仅显示名称。

您可以稍微清理一下,并通过将其放入函数中使其更容易调用:

def split-ls [] {
    insert path { $in.name | path dirname } | 
    update name { $in.name | path basename }
}

然后调用:

ls -af **/* | split-ls

如果您确实想要两个新列并删除现有名称:

ls -af **/* | insert path { $in.name | path dirname } | insert base { $in.name | path basename } | move path --before name | move base --before path | reject name

或者,如上所述:

def split-ls [ --help (-h) ] { 
    insert path { $in.name | path dirname } |
    insert base { $in.name | path basename } |
    move path --before name |
    move base --before path |
    reject name
}

ls -af **/* | split-ls

相关内容