句子中的sed或尴尬或perl替换



我需要使用 sed 或其他程序进行替代。我有这些模式<ehh> <mmm> <mhh>在句子的开头重复,我需要一无所有。

我正在尝试:

echo "$line" | sed 's/<[a-zA-z]+>//g'

但是我得到了相同的结果,没有任何改变。有人可以帮忙吗?

谢谢!

对我来说,对于测试文件

<ahh> test
<mmm>test 1

以下

sed 's/^<[a-zA-Z]+>//g' testfile

产生

 test
test 1

这似乎是您想要的。请注意,对于基本的正则表达式,您使用+,而对于扩展的正则表达式,则使用+(并且需要使用-r开关用于SED)。

nb:我在支票中添加了一个^,因为您说:

echo '<ehh> <mmm> <mhh>blabla bla' | 
sed '^Js/^([[:space:]]*<[a-zA-Z]{3}>){1,}//'
  • 删除图案的所有开始情况(包括标题空间)
  • 我逃脱了 &,以确保由于该字符在图案中的含义(无需在我的aix上工作)
  • 我不使用g,因为它删除了几个完整模式的事件,并且只有1个开始(^),并使用组与组相反,而是(){1,}

如果目标是从这样的行获取最后一个参数:

<ahh> test
<mmm>test 1

您可以做:

awk -F; '/^&lt;[[:alpha:]]+&gt/ {print $NF}' <<< "$line"
 test
test 1

它将搜索模式&lt;[[:alpha:]]+&gt并在线上打印最后一个字段,由;

隔开

相关内容

  • 没有找到相关文章

最新更新