猫になるのとただのパイプになるのの違いは何ですか?

猫になるのとただのパイプになるのの違いは何ですか?

私が次のスクリプトを書いたとしましょう。

#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

2つの質問:1)次のように書くとき、最初のスクリプトが期待どおりに機能するのはなぜですか?

cat `cat <file1.txt> | grep "*.log" | head -4 | tail -2`  helper | sort -r -n -k2 

2)grep "*.log"「.log」を使用する必要がありますか、それともgrepを使用する必要がありますか?

このスクリプトの機能は次のとおりです。

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"次の行を返します。

関連情報