[英]Searching within column using awk
我正在通過bashscript建立聯系系統。 我在其中輸入聯系人的文本文件如下所示:
Sally May,may@yahoo.com,344-555-4930,Friend
Bill,Bill@yahoo.com,344-555-6543,Co-Worker
在我要求的搜索選項中(他們選擇了該列之后):
echo -e"What would you like to search for:\c";;
read search
在這里,我想使用變量$ search遍歷FIRST列,並以格式化的方式給我這些行。 例如:
如果他們輸入(Bill),則應返回
Name Email Phone Category
Bill Bill@yahoo.com 344-555-6543 Co-Worker
如果他們輸入(ll),則應返回
Name Email Phone Category
Bill Bill@yahoo.com 344-555-6543 Co-Worker
Sally May may@yahoo.com 344-555-4930 Friend
到目前為止,我一直在研究的代碼行是:
awk -F, '{ if ($1 ~/$search/) print $0 }' contacts.txt | awk -F, 'BEGIN{printf "%-25s %-25s %-25s %-25s\n","Name","Email","Phone","Category"} {printf "%-25s %-25s %-25s %-25\n",$1,$2,$3,$4}' ;;
當我運行它時,它給我一個錯誤。 有人可以幫我解決這個問題! 我很感激
您需要使用-v
選項將變量傳遞給awk,並需要簡化格式:
s='ll'
awk -F, -v s="$s" '$0 ~ s{$1=$1; print}' file | column -t
Sally May may@yahoo.com 344-555-4930 Friend
Bill Bill@yahoo.com 344-555-6543 Co-Worker
s='Bill'
awk -F, -v s="$s" '$0 ~ s{$1=$1; print}' file | column -t
Bill Bill@yahoo.com 344-555-6543 Co-Worker
read -p "What would you like to search for? :" patt
awk -F, 'BEGIN{printf "%-25s%-25s%-25s%-25s\n","Name","Email","Phone","Category"} $1~/'$patt'/{printf("%-25s%-25s%-25s%-25s\n",$1,$2,$3,$4)}' file
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.