Объединение двух строк с помощью скриптов BASH - PullRequest
2 голосов
/ 16 мая 2011

Я использую vim, чтобы сделать простой скрипт, пытающийся получить вывод lm_sensors в другой файл.Моя проблема заключается в том, что форматирование, которое необходимо выполнить, требует объединения двух строк и вывода их в файл.Вот что у меня сейчас:

LINE1=(echo -en System: INFO $(date +%x) $(date +%T) : CPU Temperature \{ ; sensors| grep Core\ sed 's/        /, /g'|tr -d '\n')
LINE2=(echo -e \})
echo $LINE1$LINE2 >> (FILE PATH)

Единственная цель LINE2 - поставить скобку} в конце данных, так что, если есть лучший способ сделать все это в одной строке, я весь слух.

Независимо от команд sed и tr, которые форматируют данные, я хотел бы, чтобы выходные данные выглядели следующим образом, хотя я всегда получаю сообщение об ошибке «неожиданный токен»;

System: INFO (date time) : CPU Temperature { CPU Temp DATA }

Я очень ценю все входные данные.

Ответы [ 2 ]

2 голосов
/ 16 мая 2011

Это может быть намного аккуратнее:

temp=$(sensors | awk '/Core/ {printf("%s%s", sep, $3); sep = ", "}'; echo "")
printf "System: INFO %s : CPU Temperature { %s }\n" "$(date "+%x %T")" "$temp"
1 голос
/ 16 мая 2011

Попробуйте, возможно:

LINE1=`echo -en System: INFO $(date +%x) $(date +%T) : CPU Temperature \{ ; sensors| grep Core\ sed 's/        /, /g'|tr -d '\n'`
echo "$LINE1\}" >> (FILE PATH)

В качестве альтернативы:

(echo -en System: INFO $(date +%x) $(date +%T) : CPU Temperature \{ ; sensors| grep Core\ sed 's/        /, /g'|tr -d '\n')|while read line; do
   echo "$LINE1\}" >> (FILE PATH)
done
...