gpt4 book ai didi

linux - 需要理解这个sed表达式

转载 作者:太空宇宙 更新时间:2023-11-04 05:31:31 24 4
gpt4 key购买 nike

我正在读这个问题How to use conditional expression to select data?

给出的 sed 解决方案是

sed -r '1d;/(\S+\s+){5}\S+/!d;/\+$/s/\S+\s+//5;/-$/s/\S+\s+//4' 文件

我无法理解这些位

1d; - 这个 statmenet 的作用是什么

/(\S+\s+){5}\S+/ - 与任何非空白字符匹配 5 次及 1 次

!d 不知道这是做什么的

/\+$/ 这意味着以 + 结尾的任何内容

s/\S+\s+//5; 不知道

/-$/ 它搜索以 - 结尾的任何内容

s/\S+\s+//4' 不知道

最佳答案

1d;

这只是删除第一行。

/(\S+\s+){5}\S+/!d;

这会匹配任何(非空白字符 [\S] 一次或多次 [+​​],后跟任何空白字符 [\s] 一次或多次 [+])5 次 [{5}],然后是非空白字符 [\S] 一次或多次 [+],并删除任意行的整行不包含匹配项 [!d]。

语法/pattern/d将搜索您的模式并删除包含该模式的任何行。将其更改为 /pattern/!d 会起到相反的作用,因为它会删除任何不包含该匹配项的行。

/\+$/s/\S+\s+//5;

这将搜索模式 \+$,它与任何以文字加号结尾的行匹配。然后它对这些行执行操作 s/\S+\s+//5。此命令的作用是搜索模式 \S+\s+ (您应该能够根据最后一条语句的解释来解释该模式),并删除每行上第五次出现的匹配项(请注意,不是整行,只是匹配位)。

这里使用的基本语法是s/pattern/replacement/。因为替换留空,所以具有删除匹配的效果。将语法更改为 s/pattern/replacement/n 仅替换第 n 个出现的位置。

/-$/s/\S+\s+//4;

这与上面几乎相同,只是它搜索以减号结尾的行,然后在这些行上删除第四次出现的模式。

HTH。

关于linux - 需要理解这个sed表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14391934/

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