1

所以我收到了这个以逗号分隔的文件:我需要打印如下所示“lastname, phone_number, zip

对于每个姓氏以字母 H 开头的人,我

仅使用 650 区号的电话号码。输出应按反向邮政编码排序“

我只有四列,例如:

Harris, K, (650)345-1760 1200, Ellis Street Suite 230 Mountain CA 93042
Mitchell, A, (212)-555-1234 650, This Street NY NY 01234
Thomson, F, (650)-999-9999 1450, The Terrace Avenue Stratford MA 10101
irvin, h, (650)678-2445 12345, denver st santa clara 96503

我认为我在正确的道路上使用这段代码:

cat data.csv | awk -F"," '{print $1, $2, $3, $4}' |sort -t ',' -k1|grep "(650)"

然后尝试仅 grep 姓氏的第一个字母...

cat data.csv | awk -F "," '$1~/"H*"/' '{print $1, $2, $3, $4}'

但不断收到错误。我怎样才能只搜索最后一列中的第一个字母以及字符串的一部分并将其反转?(我想用排序?)

4

2 回答 2

0
awk -F', ' '
    toupper($1) ~ /^[HI]/ && $3 ~ /^\(650\)/ {
        n = split($NF, ary, " ")
        print ary[n] ":" $0
    }
' filename |
sort -rn |
cut -d: -f2-

生产

irvin, h, (650)678-2445 12345, denver st santa clara 96503
Harris, K, (650)345-1760 1200, Ellis Street Suite 230 Mountain CA 93042
于 2012-10-31T00:45:26.357 回答
0

您可能想看看r17,这是一个可以帮助您完成任务的工具。

于 2012-10-30T19:43:56.113 回答