使用shell脚本解析csv文件中的键值

时间:2017-11-04 17:21:44

标签: shell unix grep

给出csv输入文件

Id Name Address Phone
---------------------

100 Abc NewYork     1234567890  
101 Def San Antonio 9876543210  
102 ghi Chicago     7412589630  
103 GHJ Los Angeles 7896541259

我们如何使用密钥grep /命令该值?

如果密钥100,预期输出是NewYork

3 个答案:

答案 0 :(得分:1)

你可以试试这个:

grep 100 filename.csv | cut -d, -f3

Output:
New York

这将在整个文件中搜索值100,并返回匹配行的第3列中的所有值。

答案 1 :(得分:1)

使用GNU grep:

grep -Po '^100.....\K...........' file

或更短:

grep -Po '^100.{5}\K.{11}' file

输出:

NewYork    

答案 2 :(得分:1)

Awk按空格序列分割行(默认情况下)。 您可以使用它在第一列上写一个条件。

在您的示例输入中,它看起来不是CSV而是具有固定宽度的列(标题除外)。如果是这种情况,那么您可以将城市名称提取为子字符串:

awk '$1 == 100 { print substr($0, 9, 11); }' input.csv

这里9是城市列的起始位置,11是它的长度。

如果另一方面你的输入文件不是你粘贴的,但实际上是CSV(逗号分隔值),,如果输入中没有其他嵌入的逗号或换行符,那么你可以像这样写:

awk -F, '$1 == 100 { print $3 }' input.csv