![](/img/trans.png)
[英]Shell substitution/replace not working as expected with Perl and SED
[英]Sed or Awk or Perl substitution in a sentence
我需要使用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)。
注意:自从您说:在行的开头,我在支票上加上了^
。
echo '<ehh> <mmm> <mhh>blabla bla' | \
sed '^Js/^\([[:space:]]*\<[a-zA-Z]\{3\}\>\)\{1,\}//'
&
并确保由于此字符在模式中的sed含义(我的AIX上没有工作) g
因为它删除了几次完整模式的出现,并且只有1个开始( ^
)并使用带有组的多出现计数器代替\\(\\)\\{1,\\}
如果目标是从像这样的行中获取最后一个参数:
<ahh> test
<mmm>test 1
你可以做:
awk -F\; '/^<[[:alpha:]]+>/ {print $NF}' <<< "$line"
test
test 1
它将搜索模式<[[:alpha:]]+>
并在线打印最后一个字段,并用;
分隔;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.