使用shell脚本在csv文件中找到可被3整除的数字

时间:2015-06-16 11:24:20

标签: bash shell unix awk

我的csv文件包含如下内容:

1|2|3
4|5|6
7|8|9

现在我想找到使用shell脚本可以被3整除的数字。 我想使用awk命令。我正在学习shell脚本。那么请你帮我找到解决方案。

4 个答案:

答案 0 :(得分:2)

 awk -F'|' '{for(i=1;i<=NF;i++)if(!($i%3))print $i}' file
这个awk one-liner应该做。

以您的示例为例,cmd输出:

3
6
9

答案 1 :(得分:1)

你可以使用这个awk:

awk -v RS='\\||\n' '$0 % 3 == 0' file
3
6
9

-v RS =&#39; \ || \ n&#39;将输入记录分隔符设置为|或换行符,从而为$0中的每个数字提供。

!($0 % 3)(模数)将确保仅在$0 % %3为零时打印。

答案 2 :(得分:1)

使用GNU awk,它允许多字符记录分隔符:

awk -v RS='[|[:space:]]+' '$0 % 3 == 0' file

这会将记录分隔符设置为一个或多个管道或空格字符,打印每个记录均匀分为3的记录。

答案 3 :(得分:0)

以下是如何将CSV文件读入变量:

http://www.cyberciti.biz/faq/unix-linux-bash-read-comma-separated-cvsfile/

以下是如何查找保存CSV的阵列的长度:

L = $ {#阵列[@]}

现在运行这样的for循环:

for i in `seq 1 $L`; do
          if [ ${array[${i}]}%3 -eq 0 ] then
               echo ${array[${i}]}
          fi
done