Grepフィルタを使用して行の先頭のみを表示する

Grepフィルタを使用して行の先頭のみを表示する

(MacOSXを使用してPerlスクリプトに変換できます)。私はLinux / Unixコマンドに初めてアクセスし、Google検索に失敗しました。

誰かのトレーニング履歴をすばやく検索するためのスクリプトを作成しています。私がする方法は、個人のトレーニング記録を1行にリストすることです(より良い方法がありますか?)。 Grepを使用して特定の名前、トレーニングの場所、または日付を検索すると、行全体が表示されます。特定の文字列を検索して、行の先頭(たとえば、最初の2つの単語(名前/姓))のみを表示したいと思います。

Training.txt ファイルは次のようになります。

Ivie, Shawn Cashier 2016年5月24日 Storeroom 2016年12月2日 ヘルプデスク 2016年11月31日

Alan, Adam Cashier 2016年5月10日 Storeroom 2016年12月13日

マルティネス、ジェシカ計算員2017年5月20日倉庫2016年10月29日監督2016年1月23日

今使用しているコマンドは次のとおりです。 grep "Cashier" Training.txt

3つのレコード、つまりすべてのレコードの全行を返します。

私は試した: grep -E -o ".{0,0}Cashier.{0,5}" Training.txt

(この場合は3つのレコードすべて)返されますが、「Cashier」の前にはゼロが表示され、「Cashier」の後には5が表示されます。

Cashier 5/10

grep(またはPerlコマンド)を組み合わせて「スーパーバイザ」を検索し、最初の2つの単語(名前)のみを表示するにはどうすればよいですか?第二:この種のプロセスをより簡単にする方法についてのアイデアはありますか? (この場合、スプレッドシートは役に立ちません)。

ベストアンサー1

これは次の場合に最適ですawk

awk '/Supervisor/ { print $1, $2 }' /path/to/inputfile

誤って「スーパーバイザーボブ」という人に登録することがないように、検索を3番目のフィールドに制限することもできます。

awk '$3 ~ /Supervisor/ { print $1, $2 }' /path/to/inputfile

おすすめ記事