linux 中awk命令实现字符串的精确匹配
001、
root@DESKTOP-1N42TVH:/home/test3# ls test.txt root@DESKTOP-1N42TVH:/home/test3# cat test.txt ## 测试数据 AKCR02000001 df AKCR02000001 df AKCR02000001 er AKCR02000001.1 dg AKCR02000001.1 der AKCR02000001.1 fg AKCR02000001.2 ee AKCR02000001.2 ss AKCR02000001.2 aa aaad AKCR02000001 df dsfdsffff AKCR02000001 eererr AKCR02000001.4 AKCR02000001 eererr AKCR02000001.4 eerr root@DESKTOP-1N42TVH:/home/test3# awk '/AKCR02000001/' test.txt ## 并不能实现精确匹配 AKCR02000001 df AKCR02000001 df AKCR02000001 er AKCR02000001.1 dg AKCR02000001.1 der AKCR02000001.1 fg AKCR02000001.2 ee AKCR02000001.2 ss AKCR02000001.2 aa aaad AKCR02000001 df dsfdsffff AKCR02000001 eererr AKCR02000001.4 AKCR02000001 eererr AKCR02000001.4 eerr
002、实现方式1(同时考虑开头、中间、结尾的情况)
root@DESKTOP-1N42TVH:/home/test3# ls test.txt root@DESKTOP-1N42TVH:/home/test3# cat test.txt AKCR02000001 df AKCR02000001 df AKCR02000001 er AKCR02000001.1 dg AKCR02000001.1 der AKCR02000001.1 fg AKCR02000001.2 ee AKCR02000001.2 ss AKCR02000001.2 aa aaad AKCR02000001 df dsfdsffff AKCR02000001 eererr AKCR02000001.4 AKCR02000001 eererr AKCR02000001.4 eerr root@DESKTOP-1N42TVH:/home/test3# awk '/^AKCR02000001[\t ]|[\t ]AKCR02000001[\t ]|[\t ]AKCR02000001$/' test.txt AKCR02000001 df AKCR02000001 df AKCR02000001 er aaad AKCR02000001 df dsfdsffff AKCR02000001 eererr AKCR02000001.4 AKCR02000001
003、实现方式2(利用awk循环实现)
root@DESKTOP-1N42TVH:/home/test3# ls test.txt root@DESKTOP-1N42TVH:/home/test3# cat test.txt AKCR02000001 df AKCR02000001 df AKCR02000001 er AKCR02000001.1 dg AKCR02000001.1 der AKCR02000001.1 fg AKCR02000001.2 ee AKCR02000001.2 ss AKCR02000001.2 aa aaad AKCR02000001 df dsfdsffff AKCR02000001 eererr AKCR02000001.4 AKCR02000001 eererr AKCR02000001.4 eerr root@DESKTOP-1N42TVH:/home/test3# awk -v temp="AKCR02000001" '{j = 0; for(i = 1; i <= NF; i++) if($i == temp) {j++} if(j != 0) {print $0}}' test.txt AKCR02000001 df AKCR02000001 df AKCR02000001 er aaad AKCR02000001 df dsfdsffff AKCR02000001 eererr AKCR02000001.4 AKCR02000001