gpt4 book ai didi

bash - 使用自定义 shell 函数过滤 GNU split

转载 作者:行者123 更新时间:2023-12-05 05:15:57 26 4
gpt4 key购买 nike

有没有办法将 GNU split --filter 与自定义 shell 函数一起使用,例如

my_func () {
echo $1
}
split -d 10 INPUT_FILE chunk_ --filter="my_func $FILE$"

我希望输出

chunk_00
chunk_01
...

当然,自定义函数中的 echo 只是为了在这里表达我的问题,在我的具体案例中,自定义函数创建了一个脚本,该脚本使用来自 split 的 block 作为输入。

似乎 GNU shell 只接受 --filter 中的标准 shell 命令。

有什么聪明的方法可以解决这个问题吗?

最佳答案

您可以通过将函数导出到环境来执行此操作,该环境可用于 split 运行的子 shell。以 bash 为例:

ex.sh

#!/bin/bash

my_func() {
echo $1
}

export -f my_func

seq inf | split -d --filter='my_func $FILE' /dev/stdin chunk_

如果你这样运行它:

bash ex.sh | head

输出是:

chunk_00
chunk_01
chunk_02
chunk_03
chunk_04
chunk_05
chunk_06
chunk_07
chunk_08
chunk_09

更多详情请参见 this answer在 UL 上。

请注意,split 使用任何 SHELL 变量设置为子 shell 来运行 --filter 命令。如果您正在运行不同的 shell,您可能需要在运行 split 之前添加 export SHELL=/bin/bash

关于bash - 使用自定义 shell 函数过滤 GNU split,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51022049/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com