linux系统中如何精确匹配0


1、测试数据

root@DESKTOP-1N42TVH:/home/test/test# cat test.txt
2013    2014    2013    2014
1       1.3     0       0
0.9     1.7     0       0
0.9     1.3     4.2     0.9
1       1.6     0       0.9
0       1.6     0       0.9
0.9     1.2     0       0
0.9     1.3     0       0

 

2、awk实现只匹配0的行

root@DESKTOP-1N42TVH:/home/test/test# cat test.txt
2013    2014    2013    2014
1       1.3     0       0
0.9     1.7     0       0
0.9     1.3     4.2     0.9
1       1.6     0       0.9
0       1.6     0       0.9
0.9     1.2     0       0
0.9     1.3     0       0
root@DESKTOP-1N42TVH:/home/test/test# awk '/^0[^.]/ || /[\t ]0[^.]/' test.txt 1       1.3     0       0
0.9     1.7     0       0
1       1.6     0       0.9
0       1.6     0       0.9
0.9     1.2     0       0
0.9     1.3     0       0

 

root@DESKTOP-1N42TVH:/home/test/test# cat test.txt
2013    2014    2013    2014
1       1.3     0       0
0.9     1.7     0       0
0.9     1.3     4.2     0.9
1       1.6     0       0.9
0       1.6     0       0.9
0.9     1.2     0       0
0.9     1.3     0       0
root@DESKTOP-1N42TVH:/home/test/test# awk '/^0[\t ]/ || /[\t ]0[\t ]/' test.txt 1       1.3     0       0
0.9     1.7     0       0
1       1.6     0       0.9
0       1.6     0       0.9
0.9     1.2     0       0
0.9     1.3     0       0

 

root@DESKTOP-1N42TVH:/home/test/test# cat test.txt
2013    2014    2013    2014
1       1.3     0       0
0.9     1.7     0       0
0.9     1.3     4.2     0.9
1       1.6     0       0.9
0       1.6     3       0.9
0.9     1.2     0       0
0.9     1.3     0       0
0.9     1.3     8       0
root@DESKTOP-1N42TVH:/home/test/test# awk '/^0[^.]/ || /\t0[^.]/ || /\t0$/' test.txt 1       1.3     0       0
0.9     1.7     0       0
1       1.6     0       0.9
0       1.6     3       0.9
0.9     1.2     0       0
0.9     1.3     0       0
0.9     1.3     8       0

 

 

3、grep实现

 
 

root@DESKTOP-1N42TVH:/home/test/test# cat test.txt
2013 2014 2013 2014
1 1.3 0 0
0.9 1.7 0 0
0.9 1.3 4.2 0.9
1 1.6 0 0.9
0 1.6 3 0.9
0.9 1.2 0 0
0.9 1.3 0 0
0.9 1.3 8 0
root@DESKTOP-1N42TVH:/home/test/test# sed 's/\t/ /g' test.txt > test2.txt
root@DESKTOP-1N42TVH:/home/test/test# ls
test.txt test2.txt
root@DESKTOP-1N42TVH:/home/test/test# cat test2.txt
2013 2014 2013 2014
1 1.3 0 0
0.9 1.7 0 0
0.9 1.3 4.2 0.9
1 1.6 0 0.9
0 1.6 3 0.9
0.9 1.2 0 0
0.9 1.3 0 0
0.9 1.3 8 0
root@DESKTOP-1N42TVH:/home/test/test# grep -E "^0[^.]| 0 | 0$" test2.txt
1 1.3 0 0
0.9 1.7 0 0
1 1.6 0 0.9
0 1.6 3 0.9
0.9 1.2 0 0
0.9 1.3 0 0
0.9 1.3 8 0

 

 

b、grep命令实现

root@DESKTOP-1N42TVH:/home/test# ls
a.txt
root@DESKTOP-1N42TVH:/home/test# cat a.txt
2013    2014    2013    2014
1       1.3     0       0
0.9     1.7     0       0
0.9     1.3     4.2     0.9
1       1.6     0       0.9
0       1.6     0       0.9
0.9     1.2     0       0
0.9     1.3     0       0
root@DESKTOP-1N42TVH:/home/test# cat -A a.txt
2013    2014    2013    2014$
1       1.3     0       0$
0.9     1.7     0       0$
0.9     1.3     4.2     0.9$
1       1.6     0       0.9$
0       1.6     0       0.9$
0.9     1.2     0       0$
0.9     1.3     0       0$
root@DESKTOP-1N42TVH:/home/test# grep $'[\t ]\+0' a.txt ## 提取0前面有空格或者制表符的行 1       1.3     0       0
0.9     1.7     0       0
0.9     1.3     4.2     0.9
1       1.6     0       0.9
0       1.6     0       0.9
0.9     1.2     0       0
0.9     1.3     0       0
root@DESKTOP-1N42TVH:/home/test# grep $'[\t ]\+0' a.txt | grep $'0[\t ]\+' ## 利用管道,增加提取0后面有空格或者制表符的行
1       1.3     0       0
0.9     1.7     0       0
1       1.6     0       0.9
0       1.6     0       0.9
0.9     1.2     0       0
0.9     1.3     0       0

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM