【问题标题】:How to create a Unix script to segregate data Line by Line? [closed]如何创建一个 Unix 脚本来逐行隔离数据? [关闭]
【发布时间】:2019-03-07 17:18:48
【问题描述】:

我在 MyFile.CSV 文件中有一些数据,如下所示:

id,name,country                
100,tom cruise,USA          
101,Johnny depp,USA           
102,John,India

将上述文件作为输入并根据国家/地区将数据分离到 2 个不同文件中的 shell 脚本是什么?

我尝试使用 FOR 循环,然后在其中使用 2 个 IF,但我无法这样做。用awk怎么做?

For LINE in MyFile.CSV               
Do          
If grep "USA" $LINE >0 Then  
$LINE >> Out_USA.csv         
Else         
$LINE >> Out_India.csv       
Done

【问题讨论】:

标签: linux bash shell unix scripting


【解决方案1】:

你可以试试这个

grep -R "USA" /path/to/file >> Out_USA.csv
grep -R "India" /path/to/file >> Out_India.csv

【讨论】:

    【解决方案2】:

    很多方法: 一种方式:

    $ for i in `awk -F"," '{if(NR>1)print $3}' MyFile.csv|uniq|sort`; 
    do 
     echo $i; 
     egrep "${i}|country" MyFile.csv > Out_${i}.csv; 
    done
    

    这假定国家名称不会与其他列发生冲突。 如果是这样,那么您可以通过添加额外的正则表达式来微调它。 例如,国家将是最后一个字段,那么您可以在 grep 中添加 $

    【讨论】:

    • 或仅awk -F ',' 'NR>1 {print >"Out_" $3}' MyFile.CSV
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-23
    • 1970-01-01
    • 1970-01-01
    • 2015-03-24
    相关资源
    最近更新 更多