查询sed表达式的含义

查询sed表达式的含义

我一开始bash就有这样的表情线。我不明白这意味着什么。

我从手册中知道了其含义sed及其选项-n,但我不明白最后一部分的含义:

sed -n "n;p"

答案1

n跳过处理当前行并读取下一行。更准确地说,该命令用下一行替换 sed 当前的工作缓冲区(正确的术语“模式空间”)。p打印它。

由于-n抑制隐式打印,结果是每隔一行被打印。

另请参阅sed手册

答案2

这与 shell 没有任何关系,bash只是您碰巧使用它来执行sed

n中的编辑命令输出sed当前缓冲区,除非已关闭默认输出-n(如您显示的示例命令中所示),然后它会导致将下一行读入缓冲区。

编辑p命令输出当前缓冲区,无论是否-n已使用。

其效果是,从第一行输入开始,每隔两行就会被丢弃,而其他行将被打印。

效果与使用 GNU 时使用sed -n '2~2p'sed '2~2!d'或相同。这意味着“从第二行开始每隔两行”并且意味着“从第一行开始每隔两行”。地址范围修饰符是 GNU扩展。sed '1~2d'sed2~21~2~sed

使用,您将得到与where默认情况下是当前输入文件的行号并且是通用模运算符awk相同的效果。awk '(FNR % 2) == 0'FNR%

相关内容