题解 | #shell/bash打印空行的行号#

打印空行的行号

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

  • 正则匹配空行\s(匹配任何空白字符:包括空格,制表符,换页符等等.等价于[ \f\n\r\t\v])且输出带行号. ^匹配输入字符串的开始位置,$匹配输入字符串的结束位置.该题匹配空行可以用 ^\s*$ 作为目标正则,不是唯一,可根据正则语法自行灵活搭配拆分;
  1. grep使用: -n: 输出行号
  2. //作为包含awk正则匹配模式的符号, NR属于awk内部变量,代表:已经读出的记录数,就是行号;
  3. sed使用: -n:使用安静(silent)模式; //是sed正则表达式匹配模式, 最后一个=,=作为sed命令打印行号: 例如(sed = nowcoder.txt),该命令会输出文件内容,且给每一行都加上行号,但是行号都在对应行内容的上一行,独立成行,因此使用-n,忽略内容等输出,只有经过sed特殊处理的那一行(或者动作)才会被列出来;
 grep -n '^\s*$' nowcoder.txt
 awk '/^\s*$/{print NR}' nowcoder.txt
 sed -n '/^\s*$/=' nowcoder.txt
全部评论
第一种方法要去掉冒号才行 grep -n '^\s*$' test.txt|awk -F: '{print $1}'
7 回复 分享
发布于 2022-03-06 21:45
awk '/^$/ {print NR}' nowcoder.txt
2 回复 分享
发布于 2022-01-26 01:30
sed -n '/^\s*$/=' nowcoder.txt 请问这里面的/^\s*$/= 都代表什么意思呢 尤其是//=这三个
点赞 回复 分享
发布于 2022-01-18 10:57
第三种方法,再简单一点点,sed -n '/^$/=' nowcoder.txt
点赞 回复 分享
发布于 2022-05-06 19:21
都是大神
点赞 回复 分享
发布于 2022-05-09 22:50
line=1 while read value do if [ -z $value ] then echo $line; fi line=$((line+1)); done < nowcoder.txt
点赞 回复 分享
发布于 2022-05-19 10:20
你好,为什么grep匹配正则不需要//呀
点赞 回复 分享
发布于 2022-08-28 11:49 广东
grep -n "^$" nowcoder.txt |sed 's/://g'
点赞 回复 分享
发布于 2023-02-26 22:38 上海

相关推荐

牛客840099999号:没见过这样的大厂,至少头部的肯定没有
点赞 评论 收藏
分享
01-17 12:35
吉首大学 Java
秋招之BrianGriffin:自己的工作自己做!😡
点赞 评论 收藏
分享
评论
54
10
分享

创作者周榜

更多
牛客网
牛客企业服务