Nid*_*dal 5 grep sed awk text-processing
我有一个像这样的文件“测试”:
RewiteEngine On
RewriteCond %{REMOTE_ADDR} !^192\.168\.1\.7$ [NC]
RewriteCond %{REMOTE_ADDR} !^192\.168\.1\.8$ [NC]
RewriteCond %{REMOTE_ADDR} !^192\.168\.1\.9$ [NC]
RewriteCond %{REMOTE_ADDR} ^192\.168\.1\.5$ [NC]
</Directory>
Run Code Online (Sandbox Code Playgroud)
我想更换\.1\.7
,\.1\.8
并\.1\.9
通过\.1\.10
所以这将是:
RewiteEngine On
RewriteCond %{REMOTE_ADDR} !^192\.168\.1\.10$ [NC]
RewriteCond %{REMOTE_ADDR} ^192\.168\.1\.5$ [NC]
</Directory>
Run Code Online (Sandbox Code Playgroud)
它可能是用 n 个“IPS”替换 m“IPS”,我怎样才能达到这个目的?
一个perl
办法:
$ perl -ple 's/\\\.1\\\.(7|8|9)/\\.1\\.10/' file | uniq
RewiteEngine On
RewriteCond %{REMOTE_ADDR} !^192\.168\.1\.10$ [NC]
RewriteCond %{REMOTE_ADDR} ^192\.168\.1\.5$ [NC]
</Directory>
Run Code Online (Sandbox Code Playgroud)
如果你想就地编辑,你可以尝试:
perl -i.bak -nle 'next if $count and /!\^/;s/\\\.1\\\.(7|8|9)/\\.1\\.10/ and $count++ if /!\^/;print' file
Run Code Online (Sandbox Code Playgroud)