我的csv文件包含如下内容:
1|2|3
4|5|6
7|8|9
现在我想找到使用shell脚本可以被3整除的数字。
我想使用awk
命令。我正在学习shell脚本。那么请你帮我找到解决方案。
答案 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