2014-09-04 55 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