gpt4 book ai didi

awk - 根据常见字符串的出现重新索引两位数字字符串

转载 作者:行者123 更新时间:2023-12-05 09:07:47 25 4
gpt4 key购买 nike

我有一个 urlwatch .yaml 文件,格式如下:

name: 01_urlwatch update released
url: "https://github.com/thp/urlwatch/releases"
filter:
- xpath:
path: '(//div[contains(@class,"release-timeline-tags")]//h4)[1]/a'
- html2text: re
---
name: 02_urlwatch webpage
url: "https://thp.io/2008/urlwatch/"
filter:
- html2text: re
- grep: (?i)current\sversion #\s Matches a whitespace character
- strip # Strip leading and trailing whitespace
---
name: 04_RansomWhere? Objective-See
url: "https://objective-see.com/products/ransomwhere.html"
filter:
- html2text: re
- grep: (?i)current\sversion #\s Matches a whitespace character
- strip #Strip leading and trailing whitespace
---
name: 05_BlockBLock Objective-See
url: "https://objective-see.com/products/blockblock.html"
filter:
- html2text: re
- grep: (?i)current\sversion #(?i) \s
- strip #Strip leading and trailing whitespace
---

我需要根据 name: 的出现“重新索引”两位数。在此示例中,name: 的第一次和第二次出现后跟正确的索引号,但第三次和第四次不是。

在上面的示例中,第三次和第四次出现 name: 的索引号将被重新索引为 03_04_ 之前文本字符串。即:一个两位数的索引号和一个下划线。

此外,还有一些字符串 #name: 的实例不应计入重新索引。 (它们已被注释掉,因此 urlwatch 不会对这些行执行操作)

我尝试使用 sed 但无法根据字符串的出现生成索引号。我没有 GNU sed,但如果这是唯一的方法,我可以安装。

最佳答案

这可能对你有用(GNU sed):

sed -E '/^name:/{x;s/.*/expr & + 1/e;s/^.$/0&/;x;G;s/[0-9]+(.*)\n(.*)/\2\1/}' file

匹配以 name: 开头的行,增加保持空间中的计数器,将保持空间附加到模式空间,匹配第一组整数并使用捕获的组替换计数器。

关于awk - 根据常见字符串的出现重新索引两位数字字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64379946/

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