2013-04-22 50 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.*'