联通数科有问到,刚好复习一下脚本。
awk '{pattern + action}' + {filenames}
pattern是查找内容,action是指令。
exp1. 替换单个串:把每行第一个AAAA替换成BBBB
awk '{ sub(/AAAA/,"BBBB"); print $0 }' t.txt
exp2. 替换所有串:把每一行的所有AAAA替换为BBBB
awk '{ gsub(/AAAA/,"BBBB"); print $0 }' t.txt
exp3. 替换满足条件的行的串:只在出现字符串CCCC的前提下,将行中所有AAAA替换为BBBB
awk ' /CCCC/ { gsub(/AAAA/,"BBBB"); print $0; next }
{ print $ 0}
' t.txt
exp4. 替换多个可选串:不管是AAAA,还是CCCC,全部替换为BBBB
awk '{ gsub(/AAAA|aaaa/,"BBBB"); print $0 }' t.txt
exp5. 全字匹配替换:全字匹配AAAA。即不匹配AAA,以及AAAAA,也就是说完整的四个字符串AAAA。
awk '{ sub(/\<AAAA\>/,"BBBB"); print $0 }' t.txt
exp6. 正则表达式匹配:把所有以A开头,不管后面连续包含几个A的串替换成一个字符B。
awk '{ gsub(/^A*/,"B"); print $0 }' t.txt
awk替换后写入文件
awk '{gsub(/tomcat/,"tomcatxxxx"); print $0 }' content.txt > test.tmp && mv test.tmp content2.txt