用于在文件中设置屏幕分辨率值的Shell脚本

时间:2013-02-07 18:02:12

标签: macos shell sh

我想要一个

的shell脚本
  1. 抓取我当前的屏幕分辨率(已解决)
  2. 在文件中搜索包含分辨率设置的行
  3. 用当前的
  4. 替换文件中的旧分辨率设置

    到目前为止(谢谢!)我已获得获取当前屏幕分辨率数据的命令:

    system_profiler SPDisplaysDataType | awk '/Resolution/ {
        print "screenwidth \""$2"\"";
        print "screenheight \""$4"\"";
    }'
    

    应该写入的行分别以:

    开头
    screenwidth "VALUE1"
    screenheight "VALUE2"
    

    如何将结果写入“VALUE”位置的文件?

    (我是shell脚本世界的初学者)

2 个答案:

答案 0 :(得分:2)

拨打awk就足够了(并且grep是不必要的):

system_profiler SPDisplaysDataType | awk '/Resolution/ {
    print "screenwidth \""$2"\"";
    print "screenheight \""$4"\"";
}'

答案 1 :(得分:2)

如果我理解你的话,

sys..|grep..|awk ..$2   is new widht
sys..|grep..|awk ..$4   is new height

您希望将旧文件中的value1 / 2替换为上面一行中的新值

-- old file  --
screenwidth "VALUE1"
screenheight "VALUE2"

然后你可以一次性完成:

sys..|grep..|awk 'NR==FNR{w=$2;h=$4;next}/screenwidth/{$0="screenwidth \""w"\"";} /screenheight/{$0="screenheight \""h"\""}1' -  oldfile

请参阅此测试示例:

#I simulate your sys..|grep.. with echo

kent$  cat old.txt
foo
screenwidth "VALUE1"
screenheight "VALUE2"
bar

kent$  echo "foo 200 bar 400"|awk 'NR==FNR{w=$2;h=$4;next}/screenwidth/{$0="screenwidth \""w"\"";} /screenheight/{$0="screenheight \""h"\""}1' -  old.txt    
foo
screenwidth "200"
screenheight "400"
bar