LINUX.ORG.RU

AWK как занести результат system в массив?

 ,


0

1

Пытался написать скрипт, который на входе получает текст типа «My name is John», а на выходе выдет «My name is John»|«Мое имя Джон», но в итоге получаю «Мое имя Джон""My name is John»|0. Что я делаю не так?

BEGIN {OFS = "|"} 
{  text[NR] = $0; 
   trans[NR] = system("echo "$0 " |sed 's/\"//g'| 
    xargs -I {} wget -qO- http://translate.yandex.ru/tr.json/translate --post-data=\"srv=tr-text&lang=en-ru&text={}\"")} 
END { for (i = 1; i <= NR; i++) print text[i], trans[i]}

Перемещено beastie из general



Последнее исправление: cetjs2 (всего исправлений: 4)

что за месиво...покажи пример входных и выходных данных

zolden ★★★★★
()

Вход

"A glow of light forms around you."
"Speed %s%d"
"The %s emits some smoke."
"You can see through walls!"
"You fade into invisibility!"
"You feel a force pulling you inwards."
"You feel an evil presence..."
"You feel an otherworldly attention upon you..."
"You feel a tickle of insanity."
"You feel hungry.""A glow of light forms around you."
"Speed %s%d"
"The %s emits some smoke."
"You can see through walls!"
"You fade into invisibility!"
"You feel a force pulling you inwards."
"You feel an evil presence..."
"You feel an otherworldly attention upon you..."
"You feel a tickle of insanity."
"You feel hungry."
"You feel insulated."
"You feel storms coming."
"You feel thirsty."
"You feel your body decaying."
"You feel your genetic makeup degrading."
"You have an urge to %s the %s."
"You hear a rattling noise coming from inside yourself."
"Your back feels strengthened."
"Your mental state feels protected."
"Your skin feels slithery."
"Your skin prickles with radiation."
"Your steps stop making noise."
"You suddenly feel sharp pain for no reason."
"You feel insulated."
"You feel storms coming."
"You feel thirsty."
"You feel your body decaying."
"You feel your genetic makeup degrading."
"You have an urge to %s the %s."
"You hear a rattling noise coming from inside yourself."
"Your back feels strengthened."
"Your mental state feels protected."
"Your skin feels slithery."
"Your skin prickles with radiation."
"Your steps stop making noise."
"You suddenly feel sharp pain for no reason."
Выход
"Светом формы вокруг вас.""Скорость %s%d""%S выделяет некоторые дыма.""Вы можете видеть сквозь стены!""Вы исчезать в невидимку!""Вы чувствуете силу, тянет вас внутрь.""Вы чувствуете присутствие зла...""Вы чувствуете потусторонних внимание на вас...""Вы чувствуете, щекотать безумия.""Вы чувствуете голод.""Вам чувствовать себя изолированными.""Вы чувствуете, штормов, приходящих.""Вы почувствуете жажду.""Вы чувствуете, как ваше тело разлагается.""Вы считаете, что ваш генетический состав унижающих достоинство видов.""У вас есть желание %s %s.""Вы слышите грохот, идущим изнутри себя.""Ваша спина чувствует себя сильным.""Ваше душевное состояние, чувствует себя под защитой.""Ваша кожа чувствует себя скользящий.""Вашу кожу колючки с радиацией.""Ваши действия не шуметь.""Вы вдруг почувствовали острую боль, ни по какой причине.""A glow of light forms around you."|0
"Speed %s%d"|0
"The %s emits some smoke."|0
"You can see through walls!"|0
"You fade into invisibility!"|0
"You feel a force pulling you inwards."|0
"You feel an evil presence..."|0
"You feel an otherworldly attention upon you..."|0
"You feel a tickle of insanity."|0
"You feel hungry."|0
"You feel insulated."|0
"You feel storms coming."|0
"You feel thirsty."|0
"You feel your body decaying."|0
"You feel your genetic makeup degrading."|0
"You have an urge to %s the %s."|0
"You hear a rattling noise coming from inside yourself."|0
"Your back feels strengthened."|0
"Your mental state feels protected."|0
"Your skin feels slithery."|0
"Your skin prickles with radiation."|0
"Your steps stop making noise."|0
"You suddenly feel sharp pain for no reason."|0

Majesty911
() автор топика
Ответ на: комментарий от Majesty911

а зачем?

{
  printf $0 "|"
  system("echo "$0 " |sed 's/\"//g'| xargs -I {} wget -qO- http://translate.yandex.ru/tr.json/translate --post-data=\"srv=tr-text&lang=en-ru&text={}\" | sed 's/\"//g'")
  printf "\n"
}

anonymous
()
Ответ на: комментарий от Majesty911

можно и с выводом в переменную:

{
  tmp="echo "$0"|sed 's/\"//g'| xargs -I {} wget -qO- http://translate.yandex.ru/tr.json/translate --post-data=\"srv=tr-text&lang=en-ru&text={}\" | sed 's/\"//g'"
  while(tmp | getline buf)
     print $0"|"buf
}
принцип описан тут: http://citforum.ru/operating_systems/unixuser/gl10_22.shtml

anonymous
()
Ответ на: комментарий от anonymous

буэ.

{
  cmd="your long echo | wget | sed command"
  cmd | getline translated
  printf("%s|%s\n", $0, translated)
}
val-amart ★★★★★
()
Последнее исправление: val-amart (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.