Encontrar posição da palavra numa linha [RESOLVIDO]

1. Encontrar posição da palavra numa linha [RESOLVIDO]

Ryuk Shinigami
Ryuk

(usa Nenhuma)

Enviado em 26/10/2017 - 23:19h

Considerando o exemplo abaixo:
name: "word" "palavra" "mot" "palabra"
namelang: "en" "pt" "fr" "es"

Preciso localizar um idioma específico, por exemplo "pt", obter a posição em que se encontra na linha 2, neste caso é a "terceira" palavra da linha, jogar essa informação (3) numa variável, que será usada para encontrar "palavra" na primeira linha, exatamente no idioma especificado.

Pra deixar mais claro, se eu quiser pegar a tradução em "francês" para "palavra", usaria um comando para saber em qual posição está "fr" (neste caso é 4) para encontrar na outra linha a quarta palavra, "mot".


  


2. MELHOR RESPOSTA

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 27/10/2017 - 18:06h

Ryuk escreveu:

Considerando o exemplo abaixo:
name: "word" "palavra" "mot" "palabra"
namelang: "en" "pt" "fr" "es"

Preciso localizar um idioma específico, por exemplo "pt", obter a posição em que se encontra na linha 2, neste caso é a "terceira" palavra da linha, jogar essa informação (3) numa variável, que será usada para encontrar "palavra" na primeira linha, exatamente no idioma especificado.

Pra deixar mais claro, se eu quiser pegar a tradução em "francês" para "palavra", usaria um comando para saber em qual posição está "fr" (neste caso é 4) para encontrar na outra linha a quarta palavra, "mot".


Boa tarde Ryuk.
Use ARRAYS:
lang=("en" "pt" "fr" "es")
name=( "word" "palavra" "mot" "palabra")
for ((n=0;n<${#lang[@]};n++));do [ ${lang[$n]} = "es" ] && echo "${lang[$n]}:${name[$n]}";done
es:palabra


att.:
Marcelo Oliver

3. Re: Encontrar posição da palavra numa linha [RESOLVIDO]

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 27/10/2017 - 00:16h

Ryuk escreveu:

Considerando o exemplo abaixo:
name: "word" "palavra" "mot" "palabra"
namelang: "en" "pt" "fr" "es"

Preciso localizar um idioma específico, por exemplo "pt", obter a posição em que se encontra na linha 2, neste caso é a "terceira" palavra da linha, jogar essa informação (3) numa variável, que será usada para encontrar "palavra" na primeira linha, exatamente no idioma especificado.

Pra deixar mais claro, se eu quiser pegar a tradução em "francês" para "palavra", usaria um comando para saber em qual posição está "fr" (neste caso é 4) para encontrar na outra linha a quarta palavra, "mot".


é D+ pra eu entender isso ... se vira nos 30 aí e v se te ajuda >>> http://shell-script.yahoogrupos.com.narkive.com/YGmcMfmV/descobrir-qual-coluna-esta-a-string

------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------



4. Re: Encontrar posição da palavra numa linha

Ryuk Shinigami
Ryuk

(usa Nenhuma)

Enviado em 27/10/2017 - 00:39h

Já tinha achado uma solução "gambiarrística" aqui:
var=pt ; grep "namelang" $var arquivo.txt | sed -e "s/$var.*$/$var/" | wc -w 

Daí usaria o cut para encontrar a palavra:
grep -w "name" arquivo.txt | cut -d" " -f$var2 

Mas, ainda não tá o ideal. Palavras compostas com espaços não saem completas com o cut.

Tava esperando alguém aparecer com um comando, digamos, mais "elegante".


5. Re: Encontrar posição da palavra numa linha [RESOLVIDO]

Ryuk Shinigami
Ryuk

(usa Nenhuma)

Enviado em 27/10/2017 - 20:04h

msoliver escreveu:

Boa tarde Ryuk.
Use ARRAYS:
lang=("en" "pt" "fr" "es")
name=( "word" "palavra" "mot" "palabra")
for ((n=0;n<${#lang[@]};n++));do [ ${lang[$n]} = "es" ] && echo "${lang[$n]}:${name[$n]}";done
es:palabra


att.:
Marcelo Oliver


Ok, acho que posso adaptar isso ao que pretendo de fato.
Obrigado!