用于从列表中使用并为每个元素运行(唯一)命令的实用程序

用于从列表中使用并为每个元素运行(唯一)命令的实用程序

我试图创建一个实用程序来从标准输入读取列表,然后给它一个命令。

我制作了这个脚本:(命名consume_list

#!/bin/bash

set -euo pipefail

eval "hack() {  $@ ; }"

while read -r line
do
    hack "$line"
done < <(cat /dev/stdin)

这样我就可以包装命令并简化脚本的阅读和制作。

一个糟糕的例子是在列表上使用 bash 替换(对我来说,它比 sed、cut、tr 等更容易),如下所示:

cat log.txt | grep 'error' | consume_list 'echo ${1:20:10}'

这将

有没有合适的工具为了达成这个 ?

答案1

在标准输入(或其他任何地方)的一系列行上运行命令的“正确”工具是xargs:

grep error log.txt | xargs -r -d\\n -n 1 bash -c 'echo ${0:20:10}'

然而,在您的示例中,使用它确实要好得多cut

grep error log.txt | cut -c21-30

相关内容