“打印空行的行号”的版本间的差异

来自linux中国网wiki
跳到导航 跳到搜索
(创建页面,内容为“=打印空行的行号= <pre> sed -n '/^$/ =' file </pre> /^$/:这是一个正则表达式,表示匹配一行的开始和结束之间没有任何字符,也…”)
 
→‎awk
 
(未显示同一用户的5个中间版本)
第1行: 第1行:
 +
[[category:shell]]
 
=打印空行的行号=
 
=打印空行的行号=
 
<pre>
 
<pre>
第9行: 第10行:
  
 
= 是sed中的特殊命令,用于输出当前行的行号
 
= 是sed中的特殊命令,用于输出当前行的行号
 +
 +
==grep==
 +
<pre>
 +
 +
grep -n '^$' test.txt
 +
2:
 +
4:
 +
 +
</pre>
 +
 +
==awk==
 +
<pre>
 +
awk '/^$/{print NR}' test.txt
 +
 +
 +
解释:
 +
 +
    awk程序是由一系列的模式 - 动作(pattern - action)语句组成。在这里,/^$/{print NR}是一个awk语句。
 +
    模式/^$匹配空行,^表示行的开始,$表示行的结束,两个连在一起就表示匹配空行(即没有任何字符的行)。
 +
    动作print NR用于打印当前行的行号,NR是awk中的一个内置变量,它表示当前正在处理的行的行号。
 +
 +
 +
/^$/:匹配空行。
 +
NR:内置变量,表示当前行号。
 +
 +
</pre>
 +
=== cat ===
 +
<pre>
 +
p cat  -n 11 | grep -E "^\s*[0-9]+\s*$"
 +
    1
 +
    3
 +
    4
 +
 +
cat -n file.txt
 +
为文件的每一行添加行号。
 +
 +
grep -E "^\s*[0-9]+\s*$"
 +
 +
    -E:启用扩展正则表达式。
 +
    ^\s*[0-9]+\s*$:
 +
        ^:行的开头。
 +
        \s*:匹配任意数量的空白字符。
 +
        [0-9]+:匹配行号(至少一个数字)。
 +
        \s*$:匹配行号后任意数量的空白字符直到行尾(表示空行)
 +
</pre>
 +
 +
=references=
 +
https://blog.nowcoder.net/n/c23c332c03b64108bc87d6b09a981128
 
[[category:]]
 
[[category:]]

2025年1月12日 (日) 06:58的最新版本

打印空行的行号

 sed -n '/^$/   =' file

/^$/:这是一个正则表达式,表示匹配一行的开始和结束之间没有任何字符,也就是匹配空行

-n 是sed中的选项,用于抑制自动输出

= 是sed中的特殊命令,用于输出当前行的行号

grep

grep -n '^$' test.txt 
2:
4:

awk

awk '/^$/{print NR}' test.txt


解释:

    awk程序是由一系列的模式 - 动作(pattern - action)语句组成。在这里,/^$/{print NR}是一个awk语句。
    模式/^$匹配空行,^表示行的开始,$表示行的结束,两个连在一起就表示匹配空行(即没有任何字符的行)。
    动作print NR用于打印当前行的行号,NR是awk中的一个内置变量,它表示当前正在处理的行的行号。


/^$/:匹配空行。
NR:内置变量,表示当前行号。

cat

p cat  -n 11 | grep -E "^\s*[0-9]+\s*$"
     1	
     3	
     4	

cat -n file.txt
为文件的每一行添加行号。

grep -E "^\s*[0-9]+\s*$"

    -E:启用扩展正则表达式。
    ^\s*[0-9]+\s*$:
        ^:行的开头。
        \s*:匹配任意数量的空白字符。
        [0-9]+:匹配行号(至少一个数字)。
        \s*$:匹配行号后任意数量的空白字符直到行尾(表示空行)

references

https://blog.nowcoder.net/n/c23c332c03b64108bc87d6b09a981128 [[category:]]