awk - 使用 sed 搜索降价
问题描述
问题
我在一个文件夹中有多个 Markdown 文件,格式如下...
# Cool Project
* Random Text
* Other information
TODO: This is a task
TODO: This is another task
我写了一个脚本,从所有文件中提取所有以 TODO 开头的字符串......
ag TODO: ~/myfolder/journal | sed 's/\(^.*:\)\(.*\)/TODO:\2 /g' | sed ''/TODO:/s//`printf "\033[35mTODO:\033[0m"`/'' | sed ''s/![a-zA-Z0-9]*/$(printf "\033[31;1m&\033[0m")/''
这给了我这样的输出
TODO: This is a task
TODO: This is another task
我想知道是否可以使用 sed 从模式向后看,以识别和拾取以开头的行/^# /
并将其附加到字符串的末尾......像这样
TODO: This is a task # Cool Project
TODO: This is another task # Cool Project
解决方案
使用 sed:
sed -n '/^#/h;/^TODO/{G;s/\n/ /p}' file
搜索以 # 开头的行并添加到保留空间 (h) 然后当一行以“TODO”开头时,将保留空间附加到模式空间 (G) 并用新行替换空格。
推荐阅读
- matlab - 如何在维度矩阵上排序后获取元素
- php - 使用 PayPal 的智能支付按钮模拟错误
- java - RestTemplate exchange() 返回部分数据
- java - 如何禁用自动提交 Spring Boot?
- github - 致命:添加文件失败
- jquery - 是否有一个 jQuery 选择器可以区分有文本的元素和没有文本的元素?
- tableau-api - 使用 IF 条件计数
- c# - 在 c# ASP .NET 中使用 JQuery 和 Ajax 方法自动完成
- google-colaboratory - 使用谷歌合作实验室的 Z3
- javascript - “动态”加载带有 html5 视频的 Flickity corousel