CSV仅在特定列上排序

  • 本文关键字:排序 CSV shell csv
  • 更新时间 :
  • 英文 :


因此,使用此逗号限制的文件显示:我需要打印以如下"lastname,phone_number,zip

对于每个以字母h开头的姓氏的人,i

仅使用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)"

然后尝试仅抓取姓氏的首字母...

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

但继续遇到错误。我如何仅在最后一列中仅搜索第一个字母以及仅在字符串中的一部分?

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

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

最新更新