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

Macos 用于在文件中设置屏幕分辨率值的Shell脚本,macos,shell,sh,Macos,Shell,Sh,我想要一个shell脚本 获取我当前的屏幕分辨率,已解决 在文件中搜索包含分辨率设置的行, 将文件中的旧分辨率设置替换为当前分辨率设置 到目前为止,谢谢!我有获取当前屏幕分辨率数据的命令: system_profiler SPDisplaysDataType | awk '/Resolution/ { print "screenwidth \""$2"\""; print "screenheight \""$4"\""; }' 应写入的行分别以以下开头: screenwidth

我想要一个shell脚本

获取我当前的屏幕分辨率,已解决 在文件中搜索包含分辨率设置的行, 将文件中的旧分辨率设置替换为当前分辨率设置 到目前为止,谢谢!我有获取当前屏幕分辨率数据的命令:

system_profiler SPDisplaysDataType | awk '/Resolution/ {
    print "screenwidth \""$2"\"";
    print "screenheight \""$4"\"";
}'
应写入的行分别以以下开头:

screenwidth "VALUE1"
screenheight "VALUE2"
如何将结果写入值位置上的文件

我是shell脚本的初学者

一次调用awk就足够了,grep是不必要的:

system_profiler SPDisplaysDataType | awk '/Resolution/ {
    print "screenwidth \""$2"\"";
    print "screenheight \""$4"\"";
}'
一次对awk的呼叫就足够了,而grep是不必要的:

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

如果我没听错的话

sys..|grep..|awk ..$2   is new widht
sys..|grep..|awk ..$4   is new height
您想用上述行中的新值替换旧文件中的值1/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

如果我没听错的话

sys..|grep..|awk ..$2   is new widht
sys..|grep..|awk ..$4   is new height
您想用上述行中的新值替换旧文件中的值1/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

不要向awk输送grep。曾经而不是grep Resolution | awk'{print$2}',doawk'/Resolution/{print$2}'好的,谢谢,我会更新这部分!不要向awk输送grep。曾经而不是grep Resolution | awk'{print$2}',doawk'/Resolution/{print$2}'好的,谢谢,我会更新这部分!既然其他人指出不需要grep,我更新了分辨率获取行,那么如何将其与更新后的行一起使用呢?awk'/Resolution/over对我来说并不重要,但我如何将结果写入实际文件?这样我就可以打印出来了。>oldfile而不是-oldfile只是将文件写入空文件。@yusf将输出重定向到文件。像awk…>file@Kant但将文件呈现为空:当其他人指出grep不需要时,我更新了分辨率获取行,我如何将其与更新后的行一起使用?awk'/Resolution/over对我来说并不重要,但我如何将结果写入实际文件?这样我就可以打印出来了。>oldfile而不是-oldfile只是将文件写入空文件。@yusf将输出重定向到文件。像awk…>file@Kant但将文件呈现为空:s