Eu estava tentando criar um utilitário para ler uma lista de stdin e, em seguida, dar um comando.
Eu fiz este script: (nomeado consume_list
)
#!/bin/bash
set -euo pipefail
eval "hack() { $@ ; }"
while read -r line
do
hack "$line"
done < <(cat /dev/stdin)
E assim posso agrupar comandos e facilitar a leitura e confecção de scripts.
um exemplo ruim é usar substituições bash na lista (é, para mim, mais fácil do que sed, cut, tr etc.), como em:
cat log.txt | grep 'error' | consume_list 'echo ${1:20:10}'
qual seria
Existe uma ferramenta adequada para conseguir isso?
A ferramenta “adequada” para executar um comando em uma série de linhas da entrada padrão (ou em qualquer outro lugar) é
xargs
:No entanto, no seu exemplo, é realmente muito melhor usar
cut
: