首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按月、年删除所有文本

按月、年删除所有文本
EN

Stack Overflow用户
提问于 2020-04-19 19:45:35
回答 2查看 54关注 0票数 1

我正试图通过解析ietf RFC指数来生成RFC的简短描述列表。我希望能得到一些关于curl https://www.ietf.org/download/rfc-index.txt | sed 'magic' | awk 'more magic' | cut -f ?效果的命令

命令curl https://www.ietf.org/download/rfc-index.txt的未解析输出如下所示:

代码语言:javascript
复制
6708 Application-Layer Traffic Optimization (ALTO) Requirements. S.
      Kiesel, Ed., S. Previdi, M. Stiemerling, R. Woundy, Y. Yang.
      September 2012. (Format: TXT, HTML) (Status: INFORMATIONAL) (DOI:
      10.17487/RFC6708) 

6709 Design Considerations for Protocol Extensions. B. Carpenter, B.
     Aboba, Ed., S. Cheshire. September 2012. (Format: TXT, HTML)
     (Status: INFORMATIONAL) (DOI: 10.17487/RFC6709) 

6710 Simple Mail Transfer Protocol Extension for Message Transfer
     Priorities. A. Melnikov, K. Carlberg. August 2012. (Format: TXT,
     HTML) (Status: PROPOSED STANDARD) (DOI: 10.17487/RFC6710) 

6711 An IANA Registry for Level of Assurance (LoA) Profiles. L.
     Johansson. August 2012. (Format: TXT, HTML) (Status: INFORMATIONAL)
     (DOI: 10.17487/RFC6711) 

我希望能在月年度上获得额外的笔记输出。

代码语言:javascript
复制
6708 Application-Layer Traffic Optimization (ALTO) Requirements. S.
      Kiesel, Ed., S. Previdi, M. Stiemerling, R. Woundy, Y. Yang.

6709 Design Considerations for Protocol Extensions. B. Carpenter, B.
     Aboba, Ed., S. Cheshire.

6710 Simple Mail Transfer Protocol Extension for Message Transfer
     Priorities. A. Melnikov, K. Carlberg. 

6711 An IANA Registry for Level of Assurance (LoA) Profiles. L.
     Johansson.
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-19 20:34:17

这使用sed命令:

代码语言:javascript
复制
sed -r 's/^(.*)(January|February|March|April|May|June|July|August|September|October|November|December) [[:digit:]]{4}(.*)$/\1/'

只要用管道curl就行了。

一些细节:

  • -r:使用“扩展正则表达式”
  • 在第一组中捕获"$month $year“之前的输出数据(用括号表示)
  • 在第二组中捕获"$month $year“。
  • 把剩下的抓到第三组。
  • 只输出第一组(\1)

以下是Barnett关于命令行工具的经典系列文章中关于sed的部分内容。

票数 1
EN

Stack Overflow用户

发布于 2020-04-19 20:33:50

如果所有条目的结构与所显示的一样一致,则甚至不需要显式匹配年份或月份,但可以依赖要删除的所有部分如何分隔。

以下命令可用于输入:

代码语言:javascript
复制
sed -zE 's/[^.]+\.[ \n]+\([^)]+\)[ \n]+\([^)]+\)[ \n]+\([^)]+\)//g' yourfile

本质上,它匹配最后(也是唯一)三个父级文本(\([^)]+\)),以及它们前面的最后一个以点结尾的字符串([^.]+\.)。它允许用空格和/或换行符([ \n]+)分隔这三个成分。

此外,使用-z选项,sed将输入文件作为一行处理。-E是使用+代替\+来表示1或更多(代价是必须编写\(\)来匹配文字括号)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61310635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档