2013-04-22 49 views
0

我的输入是一大串文件。他们可以在名称中包含任何字符(包括句点,因为也有一些包名称)。下面是一些小样本输入:从输入中清除所有文件扩展名

com.test.impl.servlets.Test.xml 
TestClass.class 
TestClass1.class 
Test2.java 
Test3.java 

我想知道在我的列表中的不同的文件扩展名的,所以基本上,我想最后期后的egrep -o一切。事情是这样的:

input | xargs <unknown command but probably egrep> | sort -u 

将返回:

.xml 
.class 
.java 

回答

3

您可以尝试grep -o '\.[^.]*$'

$ echo 'com.test.impl.servlets.Test.xml 
TestClass.class 
TestClass1.class 
Test2.java 
Test3.java' | grep -o '\.[^.]*$' | sort -u 
.class 
.java 
.xml 

sed 's/.*\././'

$ echo 'com.test.impl.servlets.Test.xml 
TestClass.class 
TestClass1.class 
Test2.java 
Test3.java' | sed 's/.*\././' | sort -u 
.class 
.java 
.xml 
0

如果你的化妆已PCRE编译

$ grep -P -o '.*\.\K.*' 
相关问题