2017-05-09 29 views
0

我有日期標記的日誌文件。我只想從日誌中提取一天。所以我的日誌Unix - 從字符串中刪除

server01.log-2017-05-08.gz 
server00152.log-2017-05-08.gz 

我如何從文件中提取。我試過

echo "www1-ssl-access.log-2017-05-07.gz" | rev | cut -d"-" -f1 | rev 

但它提取了我不想要的08.gz。我只需要文件中的。我會如何去做這件事?有人能幫我嗎?

+0

此外,反映你的問題歷史,你應該閱讀[this](http://stackoverflow.com/help/someone-answers), –

回答

0

您可以添加一個sed到最後刪除。廣州

echo "www1-ssl-access.log-2017-05-07.gz" | rev | cut -d"-" -f1 | rev | sed -e 's/.gz//' 
2

您可以使用AWK是這樣的:

echo "www1-ssl-access.log-2017-05-07.gz" | awk -F'[-.]' '{ print $(NF - 1) }' 
0

猛砸只:

$ i="www1-ssl-access.log-2017-05-07.gz" # set to var i 
$ j=${i##*-}        # remove from last - to beginning 
$ echo ${j%%.*}       # remove from first . to end and echo 
07 
0

你可以請使用sed並記住\(\)之間的一部分:

echo "www1-ssl-access.log-2017-05-07.gz" | sed 's/.*-\([^.]*\)\.gz/\1/' 

您可以根據輸入的變化更改sed命令。 當文件未被壓縮時,您可能仍然想要獲取該號碼。

printf "%s\n" "www1-ssl-access.log-2017-05-07" "www1-ssl-access.log-2017-05-07.gz" | 
    sed 's/.*-\([^.]*\).*/\1/'