sed和perl
perl常用参数说明
参数 -n和-p -e -i
1.-n和-p 增加了循环的功能,使你可以一行一行来处理文件
2.-e
可以让Perl程序在Perl命令行上运行.
例如,我们可以在Perl命令行上运行"HelloWorld"程序而不用把它写入文件再运行.
$perl-e'print"HelloWorld\n"'
3:-i
把源文件更名然后从这个更名的源文件里读取.最后把处理后的数据写入源文件.
如果-i后跟有其他字符串,这个字符串与源文件名合成后来生成一个新的文件名.
此文件会被用来储存原始文件以免被-i参数覆盖.
AIX 举例:grep -irl '20201207' . | xargs perl -p -i -e 's/20201207/20201208/g'
说明:因为aix操作系统中,sed没有-i参数,无法直接修改原文件,所以使用perl命令修改原文件。
不管是sed还是perl,如果想要用变量替代字符串时,使用双引号替换单引号就可以了。
AIX和LINUX对于@字符的处理不同,AIX需要转义字符\才能匹配,LINUX不需要。
AIX写法:
echo "replace [ulog/ULOG@bizdb]";
grep -irl 'ulog/ULOG@bizdb' . | xargs perl -p -i -e 's/ulog\/ULOG\@bizdb/ulog\/ULOG\@dmpdb/g';
echo "replace [clear/clear@bizdb]";
grep -irl 'clear/clear@bizdb' . | xargs perl -p -i -e 's/clear\/clear\@bizdb/clear\/clear\@dmpdb/g';
echo "replace [interface/interface@bizdb]";
grep -irl 'interface/interface@bizdb' . | xargs perl -p -i -e 's/interface\/interface\@bizdb/interface\/interface\@dmpdb/g';
echo "replace [trade/trade@bizdb]";
grep -irl 'trade/trade@bizdb' . | xargs perl -p -i -e 's/trade\/trade\@bizdb/trade\/trade\@dmpdb/g';
echo "replace [security/security@bizdb]";
grep -irl 'security/security@bizdb' . | xargs perl -p -i -e 's/security\/security\@bizdb/security\/security\@dmpdb/g';
LINUX写法:
echo "replace [ulog/ULOG@bizdb]";
grep -irl 'ulog/ULOG@bizdb' . | xargs sed -i 's/ulog\/ULOG@bizdb/ulog\/ULOG@dmpdb/gi';
echo "replace [clear/clear@bizdb]";
grep -irl 'clear/clear@bizdb' . | xargs sed -i 's/clear\/clear@bizdb/clear\/clear@dmpdb/gi';
echo "replace [interface/interface@bizdb]";
grep -irl 'interface/interface@bizdb' . | xargs sed -i 's/interface\/interface@bizdb/interface\/interface@dmpdb/gi';
echo "replace [trade/trade@bizdb]";
grep -irl 'trade/trade@bizdb' . | xargs sed -i 's/trade\/trade@bizdb/trade\/trade@dmpdb/gi';
echo "replace [security/security@bizdb]";
grep -irl 'security/security@bizdb' . | xargs sed -i 's/security\/security@bizdb/security\/security@dmpdb/gi';
AIX操作系统
#!/bin/sh
######################################################
date_replaced=$1
date_new=$2
#日期根据实际情况进行调整,默认从20201207开始,每日增量备份
#涉及文件:0_update_bigtables_date.sql
#涉及文件类: aix_3_impdp_xxxx.sql
# x86_3_expdp_xxxx.sql
# aix_5_check.sh
# x86_5_check.sh
#下面含义是将20201207替换成20201208
echo "date_replaced [$date_replaced]";
echo "date_new [$date_new]";
echo "grep -irl $date_replaced . | xargs perl -p -i -e "s/$date_replaced/$date_new/g"";
grep -irl $date_replaced . | xargs perl -p -i -e "s/$date_replaced/$date_new/g";
######################################################
#当客户现场的用户名密码,实例名,导入导出目录和默认的不同时处理,否则不处理
#涉及文件类:aix_3_impdp_xxxx.sql
# x86_3_expdp_xxxx.sql
#下面含义是将ulog/ULOG@bizdb替换成ulog/ULOG@dmpdb
echo "replace [ulog/ULOG@bizdb]";
grep -irl 'ulog/ULOG@bizdb' . | xargs perl -p -i -e 's/ulog\/ULOG\@bizdb/ulog\/ULOG\@dmpdb/g';
echo "replace [clear/clear@bizdb]";
grep -irl 'clear/clear@bizdb' . | xargs perl -p -i -e 's/clear\/clear\@bizdb/clear\/clear\@dmpdb/g';
echo "replace [interface/interface@bizdb]";
grep -irl 'interface/interface@bizdb' . | xargs perl -p -i -e 's/interface\/interface\@bizdb/interface\/interface\@dmpdb/g';
echo "replace [trade/trade@bizdb]";
grep -irl 'trade/trade@bizdb' . | xargs perl -p -i -e 's/trade\/trade\@bizdb/trade\/trade\@dmpdb/g';
echo "replace [security/security@bizdb]";
grep -irl 'security/security@bizdb' . | xargs perl -p -i -e 's/security\/security\@bizdb/security\/security\@dmpdb/g';
#下面含义是将directory=ORABAK替换成directory=ORABAK1
#echo "replace [directory=ORABAK]";
#grep -irl 'directory=ORABAK' . | xargs perl -p -i -e 's/directory=ORABAK/directory=ORABAK1/g';
#涉及文件类:aix_1_replace.sh
# aix_2_bigtables.sh
# aix_3_generate.sh
# aix_5_check.sh
# x86_1_replace.sh
# x86_2_bigtables.sh
# x86_3_generate.sh
# x86_5_check.sh
#下面含义是将ORACLE_SID=bizdb替换成ORACLE_SID=dmpdb
echo "replace [ORACLE_SID=bizdb]";
grep -irl 'ORACLE_SID=bizdb' . | xargs perl -p -i -e 's/ORACLE_SID=bizdb/ORACLE_SID=dmpdb/g';
######################################################
#下面含义是将securitypassword="security"替换成securitypassword="security_test"
#echo "replace [securitypassword="security"]";
#grep -irl 'securitypassword="security"' . | xargs perl -p -i -e 's/securitypassword="security"/securitypassword="security_test"/g';
#echo "replace [clearpassword="clear"]";
#grep -irl 'clearpassword="clear"' . | xargs perl -p -i -e 's/clearpassword="clear"/clearpassword="clear_test"/g';
#echo "replace [tradepassword="trade"]";
#grep -irl 'tradepassword="trade"' . | xargs perl -p -i -e 's/tradepassword="trade"/tradepassword="trade_test"/g';
#echo "replace [interfacepassword="interface"]";
#grep -irl 'interfacepassword="interface"' . | xargs perl -p -i -e 's/interfacepassword="interface"/interfacepassword="interface_test"/g';
#echo "replace [ulogpassword="ULOG"]";
#grep -irl 'ulogpassword="ULOG"' . | xargs perl -p -i -e 's/ulogpassword="ULOG"/ulogpassword="ULOG_test"/g';
LINUX操作系统
#!/bin/sh
######################################################
date_replaced=$1
date_new=$2
#日期根据实际情况进行调整,默认从20201207开始,增量备份
#涉及文件:0_update_bigtables_date.sql
#涉及文件类: aix_3_impdp_xxxx.sql
# x86_3_expdp_xxxx.sql
# aix_5_check.sh
# x86_5_check.sh
#下面含义是将20201207替换成20201208
echo "date_replaced [$date_replaced]";
echo "date_new [$date_new]";
echo "grep -irl $date_replaced . | xargs sed -i \"s/$date_replaced/$date_new/gi\"";
grep -irl $date_replaced . | xargs sed -i "s/$date_replaced/$date_new/gi";
######################################################
#当客户现场的用户名密码,实例名,导入导出目录和默认的不同时处理,否则不处理
#涉及文件类:aix_3_impdp_xxxx.sql
# x86_3_expdp_xxxx.sql
#下面含义是将ulog/ULOG@bizdb替换成ulog/ULOG@dmpdb
echo "replace [ulog/ULOG@bizdb]";
grep -irl 'ulog/ULOG@bizdb' . | xargs sed -i 's/ulog\/ULOG@bizdb/ulog\/ULOG@dmpdb/gi';
echo "replace [clear/clear@bizdb]";
grep -irl 'clear/clear@bizdb' . | xargs sed -i 's/clear\/clear@bizdb/clear\/clear@dmpdb/gi';
echo "replace [interface/interface@bizdb]";
grep -irl 'interface/interface@bizdb' . | xargs sed -i 's/interface\/interface@bizdb/interface\/interface@dmpdb/gi';
echo "replace [trade/trade@bizdb]";
grep -irl 'trade/trade@bizdb' . | xargs sed -i 's/trade\/trade@bizdb/trade\/trade@dmpdb/gi';
echo "replace [security/security@bizdb]";
grep -irl 'security/security@bizdb' . | xargs sed -i 's/security\/security@bizdb/security\/security@dmpdb/gi';
#下面含义是将directory=ORABAK替换成directory=ORABAK1
echo "replace [directory=ORABAK]";
grep -irl 'directory=ORABAK' . | xargs sed -i 's/directory=ORABAK/directory=ORABAK1/gi';
#涉及文件类:aix_1_replace.sh
# aix_2_bigtables.sh
# aix_3_generate.sh
# aix_5_check.sh
# x86_1_replace.sh
# x86_2_bigtables.sh
# x86_3_generate.sh
# x86_5_check.sh
#下面含义是将ORACLE_SID=bizdb替换成ORACLE_SID=dmpdb
echo "replace [ORACLE_SID=bizdb]";
grep -irl 'ORACLE_SID=bizdb' . | xargs sed -i 's/ORACLE_SID=bizdb/ORACLE_SID=dmpdb/gi';
######################################################
#下面含义是将securitypassword="security"替换成securitypassword="security_test"
echo "replace [securitypassword="security"]";
grep -irl 'securitypassword="security"' . | xargs sed -i 's/securitypassword="security"/securitypassword="security_test"/gi';
echo "replace [clearpassword="clear"]";
grep -irl 'clearpassword="clear"' . | xargs sed -i 's/clearpassword="clear"/clearpassword="clear_test"/gi';
echo "replace [tradepassword="trade"]";
grep -irl 'tradepassword="trade"' . | xargs sed -i 's/tradepassword="trade"/tradepassword="trade_test"/gi';
echo "replace [interfacepassword="interface"]";
grep -irl 'interfacepassword="interface"' . | xargs sed -i 's/interfacepassword="interface"/interfacepassword="interface_test"/gi';
echo "replace [ulogpassword="ULOG"]";
grep -irl 'ulogpassword="ULOG"' . | xargs sed -i 's/ulogpassword="ULOG"/ulogpassword="ULOG_test"/gi';