2014-09-04 74 views
-3

如何剪切特定句子中的特定字符?UNIX-如何剪切特定句子中的特定字符

输入字符串:

7,717 http-16502-2 INFO com.****.mxxdctm.cscxscxs**- new name:/opt/docu/fs1_1/fs_cache/09vvadadaca.mghyyysss.excel12book 
7,717 http-16502-2 INFO com.****.mxxdctm.cscxscxs**- new name:/opt/docu/fs1_1/fs_cache/09vvadadaca.bcdvsxsas.pdf 
7,717 http-16502-2 INFO com.****.mxxdctm.cscxscxs**- new name:/opt/docu/fs1_1/fs_cache/09vvadadaca.nmncdvsxsas.pdf 

我希望削减这是上述例句的文件扩展名之前的字符串。

下面输出我要找:

bcdvsxsas 
mghyyysss 
nmncdvsxsas 

回答

3
awk -F. '{print $(NF-1)}' inFile.txt 
+0

谢谢lot..I新来unix.could请您解释一下上面commands.so我可以用切割其他字符串 – 2014-09-04 13:38:44

+1

@senthilkumar在解决方案中,我们使用'.'作为字段分隔符来分割字段。 'NF'是一个'awk'内置变量,可以保存多个字段。 '$ NF'保存最后一个字段的值,所以通过打印'$(NF-1)',我们打印每一行中的第二个最后一个字段,没有硬编码,我们需要每一行的第5个字段。这与'cut -d \类似。 -f5 inF​​ile.txt'。如果你的数据是一致的,那么硬编码是完全正确的。然而,如果数据不一致,那么从行尾回溯并选择第二个字段是解决这个问题的一种更智能的方法。 – 2014-09-04 13:52:23

+1

可能希望在语句“NF {print $(NF-1)}'之前添加'NF'作为空行会导致awk中止 – 2014-09-04 14:28:24

相关问题