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