gpt4 book ai didi

linux - 对于每一行输入,将该行与输出一起发出,将其传递给命令

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:15:37 24 4
gpt4 key购买 nike

我有一个输入文件,每个值都有一行,如下所示:

100
200

我打算将每个输入值传递给任意命令(此处为 abc),并生成一个输出文件,其中包含输入和相关输出。

假设我的命令 abc100 转换为 tada 并将 200 转换为 jjhu(实际生产版本会做一些不同的事情),我的预期输出是:

100 tada
200 jjhu

目前,我正在尝试使用以下命令:

cat jobs.txt | xargs -n 1 -I {} sh -c "echo {}; abc {}"

...但它的输出是:

100
tada
200
jjhu

如何纠正这种情况,将输出与输入放在同一行?

最佳答案

根本不要为这个任务使用xargs-n 1(为每行输入运行一个新的单独的 shell 进程)效率低下,并使您面临安全漏洞(考虑您的 100 是否 $(rm -rf $HOME) 进行一些转义以使其充当单个单词)。

以下可以在单个 shell 实例中运行,假设您的输入文件每一行都有一个值:

while IFS= read -r line; do
printf '%s %s\n' "$line" "$(abc "$line")"
done <jobs.txt

关于linux - 对于每一行输入,将该行与输出一起发出,将其传递给命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42685157/

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