Linux bash中的图案匹配

  • 本文关键字:bash Linux linux bash sed
  • 更新时间 :
  • 英文 :


是否有人知道如何删除模式" @TechCrunch:"在Linux中的SED中,在以下str中?

str="0,RT @TechCrunch: The Tyranny Of Government And Our Duty Of Confidentiality As Bloggers."

因此所需的输出将为:

"0,RT The Tyranny Of Government And Our Duty Of Confidentiality As Bloggers."

我尝试了多种方法,但没有人可以工作,例如:

echo $str | sed 's/@[a-zA-Z]* //'

使用 sed(或任何其他外部工具)对已经在shell变量中的单行进行了愚蠢的效率。让外壳进行替换本身容易得多。

#!/bin/bash
#      ^- must be /bin/bash, not /bin/sh, for extglobs to be available
shopt -s extglob # put this somewhere early in your script to enable extended globs
str="0,RT @TechCrunch: The Tyranny Of Government And Our Duty Of Confidentiality As Bloggers."
echo "${str//@+([[:alpha:]]): /}"

这使用Extglob 语法提供具有内置外壳模式匹配的更强大的图案匹配;+(foo)是等效于正则表格(foo)+的ExtGlob。

您已经接近了 - 只是缺少:

perl -pe 's/@w*:s//i'

sed

sed -e 's/@[a-z]: //i'

:[a-zA-Z]不匹配。另外,无需支持空间。

sed 's/@[a-zA-Z]*: //'

相关内容

  • 没有找到相关文章

最新更新