。
隔开
我需要使用 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; '/^<[[:alpha:]]+>/ {print $NF}' <<< "$line"
test
test 1
它将搜索模式<[[:alpha:]]+>
并在线上打印最后一个字段,由;