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
4

2 回答 2

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
于 2013-04-22T17:35:35.037 回答
0

如果您的 make 已编译 pcre

$ grep -P -o '.*\.\K.*'
于 2013-04-22T17:45:37.143 回答