sed命令中-nr选项的含义是什么?为何与-n输出一致?
sed选项
-nr的含义解析 你遇到的-nr并不是一个单独的特殊选项,而是sed的两个独立选项-n和-r的合并写法——很多Unix/Linux命令都支持这种短选项合并的使用方式。
分别拆解这两个选项的作用:
-n:抑制sed的默认输出(sed默认会将每一行处理后直接输出),只有当脚本中用到p打印命令时,才会输出指定的行,这也是你这两个测试命令里核心起作用的选项。-r:启用扩展正则表达式语法,让sed支持更丰富的正则元字符(比如+、?、()这类符号无需加转义符就能直接使用)。
至于为什么sed -nr '5,$p'和sed -n '5,$p'输出完全相同,是因为你使用的脚本'5,$p'只是指定了从第5行到最后一行的地址范围,然后执行打印命令p,整个过程没有用到任何正则表达式语法,所以-r选项在这里完全没发挥作用,加不加对最终结果都没有影响。
你的测试环境中用到的别名:
alias 20='printf "%03d\n" {1..20}'
仅用于生成001到020的格式化数字,和sed选项的功能无关。
内容的提问来源于stack exchange,提问作者Nox5692
相关产品推荐
相关产品推荐

