首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用sed移除多个哈希标签

使用sed移除多个哈希标签
EN

Stack Overflow用户
提问于 2019-03-20 16:32:11
回答 2查看 797关注 0票数 2

我正在OSX上写一个bash脚本。有很多grep和sed都在运行,除了一个例外:我不知道如何删除多个哈希标签。

这将删除所有的哈希标签,没有问题:

代码语言:javascript
复制
sed 's/#[^ ]*//g'

我希望这样可以删除特定的哈希标签:

代码语言:javascript
复制
sed "s/#(tag1|tag2)//g"

但它不会移除任何东西。

我认为#符号可能是一个特殊的角色,所以我试着没有:

代码语言:javascript
复制
sed "s/(tag1|tag2)//g"

这没有什么区别,tag1和tag2都没有被删除。

但如果我尝试:

代码语言:javascript
复制
sed "s/tag1//g"

然后删除tag1,留下#。

如果我试着:

代码语言:javascript
复制
sed "s/#tag1//g"

什么都没发生!它不移除tag1或标签1。

有人能指出我哪里出了问题吗?

编辑:这是代码:

代码语言:javascript
复制
results=($( \
echo "$ContentsOfHTMLFile" \
| sed -E "s/#(tag1|tag2|tag3)//g" \
| grep -iEo "<p.*>.*$VariableContainingSearchTerms\D.*</p>" \
| grep -iEo "<p.*>.*$VariableContainingSearchTerms.*</p>" \
| grep -Ev $VariableContainingSearchTermsToExclude \
| sed 's/<[^>]*>//g' \
| sed 's/http[^ ]*//g' \
| sed 's/^[[:space:]]*//' \
| sed 's/[[:space:]]*$//' \
))

所以我想做的是:

  1. 移除特定的标签。
  2. 搜索包含特定术语的<p></p>块。
  3. 只保留包含某些其他术语的块。
  4. 剥去所有的<>块。
  5. 删除所有的URL。
  6. 去掉所有前导空格。
  7. 去掉所有尾随空格。

从2-7开始的每件事都正常工作。这只是我有问题的标签。我也尝试过在序列中的其他点执行哈希标记,但这并没有什么区别。

EN

回答 2

Stack Overflow用户

发布于 2019-03-20 16:36:56

尝试:

代码语言:javascript
复制
sed -E 's/#(tag1|tag2)//g'

在苏德的帮助下:

代码语言:javascript
复制
  -E, -r, --regexp-extended
                 use extended regular expressions in the script
                 (for portability use POSIX -E).
票数 1
EN

Stack Overflow用户

发布于 2019-03-20 16:46:19

POSIX标准sed在regex中不支持|,您可以使用两个ses,如下所示:

代码语言:javascript
复制
sed -e 's/#tag1//g;s/#tag2//g;'

代码语言:javascript
复制
sed -e 's/#tag1//g;' -e 's/#tag2//g;'

顺便说一句,它还需要使用\(\)来对事物进行分组。

()将匹配父母的字面意思。

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

https://stackoverflow.com/questions/55265794

复制
相关文章

相似问题

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