2015-08-24 7 views
1

Привет им с проблемами со следующим кодом:Tcsh: преобразовать SED выхода на сумму ехрга

#|/bin/tcsh 
TOTALMOS=`grep -v "Last MO:" x.log | grep "Total: .* MOs" | grep "Total: .* MOs" | awk '{ print $2 }' | tr '\n' ' ' | awk '{ print $1 }'` 
RADIONO=`grep -n "get radio no" x.log | cut -f1 -d:` 
RADIONO2=`expr "$RADIONO" + 6` 
RADIONO3=`expr "$RADIONO2" + "$TOTALMOS"` 
SED=`sed -n ''$RADIONO2','$RADIONO3'p' x.log | awk '{ print $3 }' | tr '\n' ' '` 
echo "$SED" 

Выхода следующий:

5 8 2 4 0 10 6 11 1 3 1 9 

Пиза примечания: есть два перерыва в конец сценария "...1 9__"

Ну, что я действительно хочу, это SUM все номера, исключая финальные перерывы, из которых они происходят. Моя первая мысль заменила новые строки на «+», а затем запустила ее с помощью expr, но она не работает вообще ...

Пожалуйста, советую?

Заранее благодарен!

С наилучшими пожеланиями.

+1

Никогда не пишите [t] csh scripts - Google "csh why not". Измените свой вопрос, чтобы показать репрезентативный тестовый пример с образцом ввода и вывода, чтобы мы могли помочь вам написать сжатый awk-скрипт, чтобы делать все, что вы пытаетесь сделать с помощью этого шара оболочки, awk и еще десятка других инструментов и конвейеров. –

+1

Не используйте тег 'sh' для оболочек, несовместимых с стандартом POSIX sh! –

+0

Почему бы не работать с csh? Они говорят, что это очень похоже на C, и я хотел начать с некоторого lenguage, который будет работать для меня в будущем, и я просто начинающий. Но я хочу узнать все связанные с Linux, чтобы улучшить свои навыки на работе! –

ответ

1

AWK на помощь

$ echo "1 2 3 4 5 6 7 " | awk -vRS=" " '{sum+=$0} END{print sum}' 
28 
$ echo "1 2 3 4 5 6 7 " | awk '{for(i=1;i<=NF;i++) sum+=i; print sum}'      
28 

эти два будут сценарии и суммировать числа игнорирующих конечные пробелы, если это то, что вы имеете в виду под «двумя перерывами в конце сценария».

+0

Спасибо! Я попробую завтра на работе, idk, почему некоторые команды не работают на Ubuntu 14 и работают на моем рабочем месте, они используют unix, покупают старую сборку, я думаю. Я имел в виду только то, что вы сказали, я хотел игнорировать конечные пробелы (я не знаю, почему они появляются ...), но мой английский немного, но извините. еще раз спасибо –

 Смежные вопросы

  • Нет связанных вопросов^_^