题解 | #打印空行的行号#

打印空行的行号

http://www.nowcoder.com/practice/030fc368e42e44b8b1f8985a8d6ad255

题目: 输出一个文本文件中的所有空行的行号;

思路一:关于行号的第一思路是: grep -n 所有有了如下解题方法:

     grep -n  '^$' test.txt | awk -F ':' {print $1}
     [解析]: 
           grep -n  打印满足要求的行,并显示行号; 这里筛选的条件是以 $ 开头的行,也就是空行; 打印结果格式为:【行号:行内容】
            这种情况下,就要用到awk 进行筛选了,以『:』 为分隔符, 筛选第一部分;
     【扩展解析】:
          1) grep -n  打印满足要求的行,并显示行号;
          2) grep -v  打印不满足要求的行,并显示行号;
          3) grep -i  打印满足要求的行,忽略大小写;
          4) grep -A2 打印满足要求的行,及其下面两行;
          5) grep -B2 打印满足要求的行,及其上面两行;
          6) grep -C2 打印满足要求的行,及其上下各两行;
          7) grep '[0-9]'  打印包含数字的行;
          
     【扩展举例】:
         1)过滤出不包含数字的行:    grep -nv '[0-9]'  test.txt
         2) 过滤出不以字母开头的行:  grep -nv '^[a-zA-Z]'  test.txt
         3)去掉一个文件中所有的空行: grep -v '^$'  test.txt

思路二:通过题解,学会一种新的方法:

    awk '{if(NF==0) print NR}'  test.txt
    【解析】: 
       1)awk 两个重要的常量参数: NR:记录文件每一行的行号,从1开始;  NF:记录文件每一行的列数,按照分隔符为划分; 
       2)awk 和if连用: 用法是:  awk '{if($1==1) print 1; else if($1==2) print 2; else print 3}'
        
全部评论

相关推荐

1 收藏 评论
分享
牛客网
牛客企业服务