2017-06-18 13 views
-1

私はユーザからの入力を取得するスクリプトを作成し、その値を使ってawkを使用してtest.csvファイルを検索し、画面に出力しようとしています。 test.CSVの内容は次のとおりです。Linuxスクリプトで変数をawkに渡す

Name ID 
Rachel 123 
Mark  321 
Robert 461 

例えば、私はID番号と、このIDに関連付けられた名前を表示するawkを使用するための入力を取得したいと思います。

#!/bin/bash 
echo "Enter ID#"; 
read ID 
echo $(awk -v val=$ID '/val/{print}' /root/Desktop/test.csv 

+2

は、スタックオーバーフローへようこそ。 [The Tour](http://stackoverflow.com/tour)を読み、[ヘルプセンター](http://stackoverflow.com/help/asking)の資料を参考にしてください。ここに聞いてください。なぜあなたはこのC++にタグをつけましたか? –

+0

申し訳ありませんが、これは私の最初の投稿です。この質問に間違ったタグを入れてください – user8179700

+0

http://shellcheck.netでサンプルコードを確認してください。構文エラーのフラグを立て、問題を修正する方法についてのヒントを提供することがよくあります(ただし、メッセージを理解するのに少し時間がかかります)。がんばろう。 – shellter

答えて

2

/val/は、文字列リテラル "ヴァル" にマッチしていただきありがとうございます。これはあなたの入力は、あなたがそれを投稿の方法であることを前提としていることを

awk -v val="$ID" '$2 == val {print}' /root/Desktop/test.csv 

注:代わりに、使用して変数と各ラインの2番目の単語を一致させることができます。彼らは通常、あるとしてあなた.csvファイルはカンマで区切られている場合、あなたは-F ,を指定する必要があります:

#!/bin/bash 
read -p "Enter id: " id 
awk -F , -v val="$id" '$2 == val { print $1 }' /root/Desktop/test.csv 
+0

こんにちは、 ありがとうございます。はい、入力ファイルはコンマで区切られています。入力IDに関連付けられた名前を表示するには、完全なechoコマンドを書いてください。 ありがとう – user8179700

関連する問題