私はスクリプトに初めてアクセスし、Linuxターミナルコースを受講しています。私たちはLinuxディストリビューションUbuntuを使用しています。今週の課題の一部として、列があるタイムシートのテキストファイルで、特定の時点で特定の部門で働いている従業員を特定する必要がgrep
あります。awk
これを困難にする迷惑な部分は、時間が時間から分離されているため、AM/PM
時間を簡単に把握することが不可能であるということです。時間を配置すると、05:00:00
ワーカーAM
と行の両方が表示されるためです。PM
解決策が見つかりました。以下を入力してください。
grep -i ‘05:00:00 AM’ file.txt
これは私に効果的で、私に必要な行を与えました。
05:00:00 AM
問題は、必要に応じて時間を変更できるようにスクリプトで使用し、パラメータ/変数を使用する必要があることです。しかし、‘$1’
スクリプトを入れようとすると
grep -i '$1' 0310_Dealer_schedule | awk -F " " '{print $5} {print $6}'
赤で強調表示され、黄色で強調表示に変わります。
その後、実行しようとすると、grepはそれを私が探しているディレクトリまたはファイル05:00:00 AM
として扱います。AM
$1
次に、スクリプトに引用符を使用しないようにしました。その後、スクリプトを実行しようとしたときに次のことを実行しました。
sh scriptname.sh ‘05:00:00 AM’
これも私にエラーを与えた“AM directory does not exist”
したがって、成功した実行方法があるかどうかを知りたいです。
grep -i ‘05:00:00 AM’ file.txt | awk
-F “ “ ‘{print $5} {print $6}’
ただし、whereは05:00:00 AM
それを変数にして時間とまたはAM
を変更できますPM
。
なぜ引用符やアポストロフィのある項目が黄色に変わるのかわかりません。
私のスクリプトの目的は、変数を入力したときに作業している管理者の名前を生成することです。私が言ったように、私を悩ませる唯一のことは、sumを含むすべての行を05:00:00 AM
印刷せずにgrepを試すことです。引き続き行を印刷したいと思います。05:00:00
AM
05:00:00 AM
以下は、私が探している文書の例です。結果が合うことを願っています。
TIME AM/PM TELLERS MANAGER
05:00:00 AM J. Doe C. Jones
06:00:00 AM J. Doe C. Jones
07:00:00 AM J. Doe C. Jones
08:00:00 AM J. Doe C. Jones
09:00:00 AM J. Doe C. Jones
10:00:00 AM J. Doe C. Jones
11:00:00 AM J. Doe C. Jones
12:00:00 PM A. Smith D. MILLER
01:00:00 PM A. Smith D. MILLER
02:00:00 PM A. Smith D. MILLER
03:00:00 PM A. Smith D. MILLER
04:00:00 PM A. Smith D. MILLER
05:00:00 PM A. Smith D. MILLER
助けてくれてありがとう。
編集:プレビューすると、文書が複数の列に分割されないことがあります。しかし、ドキュメントでは列で区切られています。
TIME AM/PM TELLERS MANGER
ベストアンサー1
"
たとえば、変数の周りに二重引用符を追加すると、シェルは変数を拡張できますが、"$1"
grepはまだ変数を単一の引数として解釈します。