Linux awk替换命令

103 阅读1分钟

联通数科有问到,刚好复习一下脚本。

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