簡體   English   中英

使用awk在列內搜索

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM