假設我寫了這個腳本:
#print_time..
cat <file1.txt> | grep "*.log" | head -4 | tail -2 | helper | sort -r -n -k2
#helper..
while read line; do
linearr=($line)
(( time =${line[2]} - ${line[1]} +0 ))
echo ${line[o]} $time
done
兩個問題:1)為什麼第一個腳本只有當我這樣寫時才按預期工作:
cat `cat <file1.txt> | grep "*.log" | head -4 | tail -2` helper | sort -r -n -k2
2)我應該使用grep "*.log"
還是grep“.log”?
該腳本的作用:
給定一個 file1,當最後一個日誌檔案是給定 file1 中所有 .log 檔案的編號 4 時,我們只想讀取 2 個日誌檔案:範例:
我希望腳本的第一部分讀取:tuesday.log 和 wednesday.log,然後計算姓名在日誌檔案中的每個人的每個日誌時間的時間:
這將被印出來:
答案1
要回答您的問題,問題在於您對 的使用grep
。
Grep 將您輸入的內容視為文字,因此如果您使用 grep *.log
,它會主動尋找*
後面跟著的字元星號.log
,因此它不會找到任何內容。
作為一個快速測試,
該命令echo hello.log | grep "*.log"
不會回傳任何內容
該命令echo hello.log | grep ".log"
將返回該行