当前位置:  开发笔记 > 编程语言 > 正文

Bash sed - 在字符串中查找主题标签

如何解决《Bashsed-在字符串中查找主题标签》经验,为你挑选了1个好方法。

基于这篇文章,我试图找到一个命令来查找一个非常复杂的字符串中的所有主题标签字(以#开头的单词):

echo "Le #cerveau d’#Einstein n’est « #Ordre des #Mopses\" » pas" | sed -e 's/^/ /g' -e 's/ [^#][^ ]*//g' -e 's/^ *//g'

不幸的是输出是:

#cerveau #Mopses"

代替:

#cerveau #Einstein #Ordre #Mopses

什么应该是正确的命令?



1> choroba..:

grep通常更擅长提取子串.使用GNU-grep的-o选项(只输出匹配的部分),你可以

echo "Le #cerveau d’#Einstein n’est « #Ordre des #Mopses\" » pas" \
| grep -o '#[[:alpha:]]*'

如果你真的需要sed,做类似的事情:用#空格替换所有不以a开头的单词,然后删除第一个单词并压缩空格:

sed -e 's/[^[:alpha:]#][[:alpha:]]*/ /g' \
    -e 's/^[^#]*//' \
    -e 's/  */ /g'


您可能希望将`[[:alpha:]]*`替换为`[[:alpha:]]\+`以防止单个`#`匹配.
推荐阅读
小妖694_807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有