2017-06-18 61 views
-1

我試圖編寫一個腳本來獲取用戶的輸入,然後使用該值使用awk搜索test.csv文件並輸出到屏幕。 test.csv的內容是:在Linux腳本中將變量傳遞給awk

Name ID 
Rachel 123 
Mark  321 
Robert 461 

例如,我想獲取ID#的輸入,並使用awk顯示與此ID關聯的名稱。

#!/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

對不起,這是我的第一篇文章。將錯誤的TAG放到這個問題 – user8179700

+0

請在http://shellcheck.net上檢查您的示例代碼。它將標記語法錯誤,並且經常提供關於如何糾正問題的良好提示(但有時需要一點時間來理解消息)。祝你好運。 – shellter

回答

2

/val/文本字符串 「VAL」 相匹配。相反,你可以用你的變量使用每一行的第二個字匹配:

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

注意,這是假定您的輸入您發佈的方式。如果您.csv文件是逗號分隔的,因爲它們通常是,你必須指定-F ,

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

你好, 謝謝你的回答。是的,輸入文件用逗號分隔。你能寫完整的echo命令來顯示與輸入ID相關的名字嗎? 謝謝 – user8179700