我需要做一份工作:
echo "apa.tif bib.jpg"|sed 's/(\.tif)|(\.jpg)//g'
期待结果:
apa bib
但我得到了结果:
apa.tif bib.jpg
请有人帮我解决这个问题。感谢。
答案 0 :(得分:3)
更改您的sed命令,如下所示,
$ echo "apa.tif bib.jpg"|sed 's/\.tif\|\.jpg//g'
apa bib
OR
$ echo "apa.tif bib.jpg"|sed 's/\.\(tif\|jpg\)//g'
apa bib
在基本sed中,您需要转义|
符号才能使其执行正则表达式或操作。此外,您还需要转义(
,)
符号才能进行捕获。
您的正则表达式将被修改为,
$ echo "apa.tif bib.jpg"|sed 's/\(\.tif\)\|\(\.jpg\)//g'
apa bib
答案 1 :(得分:0)
echo "apa.tif bib.jpg" | sed -r 's/\.[^ \s\t]+//g'
答案 2 :(得分:0)
你可以尝试执行这样的多个命令:
sed -e 's/\.tif//g' -e 's/\.jpg//g'
答案 3 :(得分:0)
echo "apa.tif bib.jpg bad.tiffany.png" | sed 's/\.\(tif|jpg\)\( |$\)/\1/g'
如果,要排除非扩展模式匹配
答案 4 :(得分:0)
您也可以使用awk
:
echo "apa.tif bib.jpg" | awk '{gsub(/\.tif|\.jpg/,"")}1'
apa bib