【发布时间】:2016-07-11 05:03:36
【问题描述】:
我写了一个bash 脚本,它调用Python 脚本来扫描漏洞:
#scan.sh
while IFS=, read -r n d ;do
python scan.py $d 443 | sed "s/^\(.\)/$n,\1/"
done < Input.csv
Input.csv 看起来像:
#Input.csv
1,abc.com
2,xyz.com
3,pqr.com
.........
Output.csv 应该是这样的:
1,abc.com,True,2016-03-06
1,abc.com,False,2016-03-06
1,abc.com,True,2016-03-06
1,abc.com,True,2016-03-06
2,xyz.com,False,2016-03-06
2,xyz.com,False,2016-03-06
2,xyz.com,False,2016-03-06
2,xyz.com,False,2016-03-06
3,pqr.com,True,2016-03-06
3,pqr.com,True,2016-03-06
3,pqr.com,True,2016-03-06
3,pqr.com,True,2016-03-06
........................
每个ID 在output.csv 中都有四个条目,结果各不相同。
- 如果
ID的四个条目中的任何一个是True,它必须是True并且需要有一个ID的条目。 - 如果
ID的所有四个条目都是False,则它必须是False并且只有一个条目。 - 如果
ID的所有四个条目都是True,则它必须是True并且只有一个条目。
因此:
# processed_out.csv
1,abc.com,True,2016-03-06
2,xyz.com,False,2016-03-06
3,pqr.com,True,2016-03-06
........
我怎样才能仅通过使用 awk/sed 来实现这种情况?
仅供参考:我是 bash 脚本的初学者。
【问题讨论】:
-
有什么理由要在 bash 中执行此操作?你已经有了一个 python 脚本来完成“重要”的工作。首先让该脚本以您想要的格式吐出数据不是更容易吗?
-
@MarcB 我不想更改主脚本中的任何单行编辑,坦率地说,我对学习 bash 编程中的新东西更感兴趣;)
-
@MarcB 即使在 #scan.sh 脚本中,我也会将每个域的 ID ( sed "s/^(.)/$n,\1/" ) 插入/前缀到输出结果。我实际上爱上了 bash!