327sheng 发表于 2015-04-21 10:03

是否可以用linux命令或shell实现需要的效果?

a 为文件.   先搜索maxpopaccounts 当等于1时, quote 修改为2000
当maxpopaccounts 当等于10时,quota 会修改为10000
谢谢!!!

a
maxpopaccounts 1
quota 2000

b
maxpopaccounts 10
quota 10000

zsszss0000 发表于 2015-04-21 10:07

本帖最后由 zsszss0000 于 2015-04-21 10:12 编辑

awk '/maxpopaccounts/{a=$2==1?2000:10000;}/quota/{$2=a}1' file

327sheng 发表于 2015-04-21 10:10

好的,谢谢,非常感谢!!我试试,回复 2# zsszss0000


   

zsszss0000 发表于 2015-04-21 10:13

本帖最后由 zsszss0000 于 2015-04-21 10:13 编辑

刚刚的那个错了,我又修改了,这个应该没有问题awk '/maxpopaccounts/{a=$2==1?2000:10000;}/quota/{$2=a}1' file回复 3# 327sheng


   

327sheng 发表于 2015-04-21 11:23

谢谢,这个是可以. 但修改后,不能直接写入文件.. 我再想想.
回复 4# zsszss0000


   

zsszss0000 发表于 2015-04-21 11:50

写入文件,加上重定向符号    > file.bak就可以了,屏幕上没有输出了此时回复 5# 327sheng


   

327sheng 发表于 2015-04-21 13:22

zsszss0000 发表于 2015-04-21 11:50 static/image/common/back.gif
写入文件,加上重定向符号    > file.bak就可以了,屏幕上没有输出了此时回复 5# 327sheng   这是是针对单个文件的.. 因为要修改的文件有很多.

像这个
# find ./ -name.qmailadmin-limits -exec grep -rl 'maxpopaccounts 10' {} \;
./1/.qmailadmin-limits
# cat ./1/.qmailadmin-limits
maxpopaccounts 10      #这个是10
maxmailinglists 0
maxforwards -1
maxautoresponders -1
maxmailinglists -1
default_quota 104857600
quota 1000   #这个就要改10000
default_maxmsgcount 5000
# find ./ -name.qmailadmin-limits -exec grep -rl 'maxpopaccounts 5' {} \;   当找到maxpopaccounts 5 时
./3/.qmailadmin-limits
./2/.qmailadmin-limits
# ./3/.qmailadmin-limits
-bash: ./3/.qmailadmin-limits: Permission denied
# cat ./3/.qmailadmin-limits
maxpopaccounts 5       #这个是5
maxmailinglists 0
maxforwards -1
maxautoresponders -1
maxmailinglists X
default_quota 20480000
quota 1000            #这个就修改5000
# cat ./2/.qmailadmin-limits
maxpopaccounts 5
maxmailinglists 0
maxforwards -1
maxautoresponders -1
maxmailinglists X
default_quota 20480000
quota 1000
# ls
123h.sh
#

#!/bin/sh
if find ./ -name.qmailadmin-limits -exec grep -rl 'maxpopaccounts 10' {} \;   #这个是找到匹配的行
than
sed -i '/^quota/c quota 10000'   #这个是修改,, 但不会用shell 串连起来执行.@zsszss0000 可以帮帮忙吗? 谢谢!


页: [1]
查看完整版本: 是否可以用linux命令或shell实现需要的效果?