Estou tentando abaixo coisa, mas não consigo ter sucesso
Eu tenho arquivo com conteúdo abaixo
events_0-new
events_1-new
events_2-new
events_3-new
events_4-new
events_5-new
events_6-new
system-events_0-new
system-events_1-new
system-events_2-new
system-events_3-new
system-events_4-new
system-events_5-new
system-events_6-new
ylog_0-new
ylog_1-new
e eu tenho abaixo script
for i in `cat new.txt`
do
case $i in
system-events_*)
for file in `cat new.txt | grep system-events_*`
do
echo "$file" >> polo.txt
done
;;
events_*)
for file in `cat new.txt | grep events_*`
do
echo "$file" >> polo.txt
done
;;
ylog_*)
for file in `cat new.txt | grep ylog_*`
do
echo "$file" >> polo.txt
done
;;
esac
done
mas imprime valor várias vezes desde que usei case aqui
saída atual
events_0-new
events_1-new
events_2-new
events_3-new
events_4-new
events_5-new
events_6-new
events_0-new
events_1-new
events_2-new
events_3-new
events_4-new
events_5-new
events_6-new
system-events_0-new
system-events_1-new
system-events_2-new
system-events_3-new
system-events_4-new
system-events_5-new
system-events_6-new
system-events_0-new
system-events_1-new
system-events_2-new
system-events_3-new
system-events_4-new
system-events_5-new
system-events_6-new
ylog_0-new
ylog_1-new
ylog_0-new
ylog_1-new
A saída desejada deve ser se case corresponder a events_*, deve imprimir todos os eventos de saída apenas uma vez, não deve executar o mesmo caso para events_0-new, então events_1-new e assim por diante para events_2-new até o final.
Isso é o que eu quero se o case corresponder a events_*, então deve ser impresso como abaixo, não sete vezes events_0-new events_1-new events_2-new events_3-new events_4-new events_5-new events_6-new
Na verdade, quero usá-los como variável de ambiente no comando curl para inserir dados pertencentes apenas a essa string
Exemplo:
curl -X PUT 'http://localhost:9200/$file' -H 'Content-Type: application/json' -d events.json
curl -X PUT 'http://localhost:9200/$file' -H 'Content-Type: application/json' -d ylog.json
curl -X PUT 'http://localhost:9200/$file' -H 'Content-Type: application/json' -d system-events.json
aqui $file deve ser obtido de new.txt como events_0 ...events_6 assim por diante para outras strings também.
Pode estar faltando algum lugar para fazer isso ou não estar ciente da maneira mais simples de fazer isso.
Alguém pode me ajudar como eu só posso imprimir uma vez se o caso for correspondido, ele deve ser executado uma vez como um caso, não deve repetir aqueles para outra string com o mesmo caso.
Por favor, oriente.
Atenciosamente, SAM
Parece que você quer apenas obter a parte antes da primeira
_
na string lidanew.txt
e usá-la em uma chamada comcurl
.Se você precisar filtrar os três tipos específicos de linha do arquivo antes de processá-lo: