![查询sed表达式的含义](https://linux22.com/image/190346/%E6%9F%A5%E8%AF%A2sed%E8%A1%A8%E8%BE%BE%E5%BC%8F%E7%9A%84%E5%90%AB%E4%B9%89.png)
我一开始bash
就有这样的表情线。我不明白这意味着什么。
我从手册中知道了其含义sed
及其选项-n
,但我不明白最后一部分的含义:
sed -n "n;p"
答案1
答案2
这与 shell 没有任何关系,bash
只是您碰巧使用它来执行sed
。
n
中的编辑命令输出sed
当前缓冲区,除非已关闭默认输出-n
(如您显示的示例命令中所示),然后它会导致将下一行读入缓冲区。
编辑p
命令输出当前缓冲区,无论是否-n
已使用。
其效果是,从第一行输入开始,每隔两行就会被丢弃,而其他行将被打印。
效果与使用 GNU 时使用sed -n '2~2p'
或sed '2~2!d'
或相同。这意味着“从第二行开始每隔两行”并且意味着“从第一行开始每隔两行”。地址范围修饰符是 GNU扩展。sed '1~2d'
sed
2~2
1~2
~
sed
使用,您将得到与where默认情况下是当前输入文件的行号并且是通用模运算符awk
相同的效果。awk '(FNR % 2) == 0'
FNR
%