在Unix中使用循环处理逗号分隔值

时间:2011-07-15 10:00:24

标签: unix

我有一个包含以下值的文件:

CA, PA, NY
ND, MO, MI

我需要逐个处理这些值。流程图如下:

Enter loop -> Process CA; Process PA; Process NY -> Other commands -> Process ND; Process MO; Process MI -> End;

这是否可以使用shell脚本?

1 个答案:

答案 0 :(得分:2)

我可以想到两个显而易见的方法。如果您可以访问tr实用程序(任何UNIX / Posix主机上的标准),那么您可以tr ',' '\n' < "$your_data_file" | while read each; do $process $each; done如果没有,那么您可能仍然可以使用shell的IFS(场间分隔符)例如:cat "$your_data_file"| { IFS=','; while read line; do for each in $line; do echo $each; done; done; }(请注意,您可以使用{}分组或()作为子shell ...在此示例中它们实际上是相同的。)

请注意,您可能在$each中有一些无关的空格,您可能希望单独过滤掉这些空白。