将两行与BASH Scripts结合使用

时间:2011-05-16 17:42:12

标签: linux bash vim fedora

我正在使用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 个答案:

答案 0 :(得分:2)

它可以更加整洁:

temp=$(sensors | awk '/Core/ {printf("%s%s", sep, $3); sep = ", "}'; echo "")
printf "System: INFO %s : CPU Temperature { %s }\n" "$(date "+%x %T")" "$temp"

答案 1 :(得分:1)

试试这个,或许:

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