我有日期標記的日誌文件。我只想從日誌中提取一天。所以我的日誌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。我只需要文件中的。我會如何去做這件事?有人能幫我嗎?
我有日期標記的日誌文件。我只想從日誌中提取一天。所以我的日誌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。我只需要文件中的。我會如何去做這件事?有人能幫我嗎?
您可以添加一個sed到最後刪除。廣州
echo "www1-ssl-access.log-2017-05-07.gz" | rev | cut -d"-" -f1 | rev | sed -e 's/.gz//'
您可以使用AWK是這樣的:
echo "www1-ssl-access.log-2017-05-07.gz" | awk -F'[-.]' '{ print $(NF - 1) }'
猛砸只:
$ 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
你可以請使用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/'
此外,反映你的問題歷史,你應該閱讀[this](http://stackoverflow.com/help/someone-answers), –