目前我对这个问题感到非常沮丧。 我看不出我做错了什么。 我有这个谷歌浏览器的问题,它提供了一个没有正常closures的通知。 我想摆脱这一点。 另外我有一些更旧的replace,必须与全屏幕大小。 在bash中,所有的行产生预期的结果; 然而,在一个脚本文件,它产生一个空的设置文件…
这些行在文件中:
cat ~/.config/google-chrome/Default/Preferences | perl -pe "s/\"work_area_bottom.*/\"work_area_bottom\": $(xrandr | grep \* | cut -d' ' -f4 | cut -d'x' -f2),/" > ~/.config/google-chrome/Default/Preferences cat ~/.config/google-chrome/Default/Preferences | perl -pe "s/\"bottom.*/\"bottom\": $(xrandr | grep \* | cut -d' ' -f4 | cut -d'x' -f2),/" > ~/.config/google-chrome/Default/Preferences cat ~/.config/google-chrome/Default/Preferences | perl -pe "s/\"work_area_right.*/\"work_area_right\": $(xrandr | grep \* | cut -d' ' -f4 | cut -d'x' -f1),/" > ~/.config/google-chrome/Default/Preferences cat ~/.config/google-chrome/Default/Preferences | perl -pe "s/\"right.*/\"right\": $(xrandr | grep \* | cut -d' ' -f4 | cut -d'x' -f1),/" > ~/.config/google-chrome/Default/Preferences cat ~/.config/google-chrome/Default/Preferences | perl -pe "s/\"exit_type.*/\"exit_type\": \"Normal\",/" > ~/.config/google-chrome/Default/Preferences cat ~/.config/google-chrome/Default/Preferences | perl -pe "s/\"exited_cleanly.*/\"exited_cleanly\": true,/" > ~/.config/google-chrome/Default/Preferences
我一直在为这个问题googling很多; 然而,我没有得到正确的search词来获得有用的结果。
问题通过使用perl -p -i -e
选项来解决,如下所示:
perl -p -i -e "s/\"exit_type.*/\"exit_type\": \"Normal\",/" ~/.config/google_chrome/Default/Preferences
上面的代码足以摆脱不正确关机的Google Chrome邮件
你的问题几乎可以肯定:
> ~/.config/google-chrome/Default/Preferences
因为>
说'截断文件'。 更糟糕的是,它在开始阅读之前先做了这个。 因此,在读取文件之前截断文件,导致长度为零的文件进入零长度文件。
我建议你想在perl中完全做到这一点,而不是一个中途的房子。 perl
支持“就地编辑”的-i
选项。
或者只需在perl
写脚本即可。 (如果给出样本输入和输出,敲出一个可以做你想做的事情的例子将会非常简单)。
如果您需要搜索并替换一些文本,我建议使用:
ack -l --print0 '2011...' ~/.config/google-chrome/Default/Preferences | xargs -0 -n 1 sed -i -e 's/2011../2015.../g'