2

我想要一个shell脚本

  1. 获取我当前的屏幕分辨率,(已解决)
  2. 在文件中搜索包含分辨率设置的行,
  3. 将文件中的旧分辨率设置替换为当前设置

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

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

应分别写入的行以:

screenwidth "VALUE1"
screenheight "VALUE2"

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

(我是 shell 脚本领域的初学者)

4

2 回答 2

2

一个电话awk就足够了(并且grep是不必要的):

system_profiler SPDisplaysDataType | awk '/Resolution/ {
    print "screenwidth \""$2"\"";
    print "screenheight \""$4"\"";
}'
于 2013-02-07T18:07:37.447 回答
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
于 2013-02-07T18:14:09.087 回答