gpt4 book ai didi

linux - sed 是否无法将文件的第一行与地址范围的末尾相匹配?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:05:40 25 4
gpt4 key购买 nike

Sed 在 macOS 和 linux 上让我失望:

$ printf "1\n2\n3" | sed -n -e '1,1p'    
1
$ printf "1\n2\n3" | sed -n -e '1,/1/p'
1
2
3

结束地址范围模式/1/不起作用。/2/会的。

printf "1\n2\n3" | sed -n -e '1,/2/p'  
1
2

最佳答案

在(您的)BSD sed 示例中,1 行开始范围,/1/ 关闭范围,但是搜索/1/ 仅在 1(范围开始)之后开始。

在 GNU sed 中,有一个扩展可以处理您的具体情况,0,/regexp/ range address .文档解释得最好:

0,/regexp/ A line number of 0 can be used in an address specification like 0,/regexp/ so that sed will try to match regexp in the first input line too. In other words, 0,/regexp/ is similar to 1,/regexp/, except that if addr2 matches the very first line of input the 0,/regexp/ form will consider it to end the range, whereas the 1,/regexp/ form will match the beginning of its range and hence make the range span up to the second occurrence of the regular expression.

例如:

$ printf "%d\n" {1..3} | sed -n -e '0,/1/p'
1

关于linux - sed 是否无法将文件的第一行与地址范围的末尾相匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47161527/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com