當貓和只做管道有什麼區別

當貓和只做管道有什麼區別

假設我寫了這個腳本:

#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"將返回該行

相關內容