1

我正在使用遵循基本流程的大型 CSV。

  1. 备份工作原件
  2. 生成骨架 CSV
  3. 从另一个 CSV 读取,格式化内容,然后将其附加到骨架
  4. 将备份中的数据附加到新的。

我遇到的问题是,当我从备份中读取内容时,我正在使用grep -Ev -f一个包含正则表达式的文件来从备份中排除不需要的数据,以包含在下一个版本中。这目前存在一个问题,因为 grep 似乎针对来自 STDIN 的每一行评估文件中的每个正则表达式,这将导致重复。简单的解决方案是简单地将其通过管道sort | uniq并称之为一天,但这将与当前使用的 csv 的格式产生冲突。如果需要,我可以详细说明,但不足之处是我运行一个脚本来批量处理 IP 地址,但也有其他人手动编辑文件,并且使用当前形式的脚本,最终输出将是所有自动化内容手动条目位于文件的底部。

那么,无论如何,是否没有一些丑陋的 grep 循环来告诉它在模式匹配后停止评估一行?使用-m 1将在整个流中的第一个匹配之后停止 grep,我需要它在每个新行之后停止。

4

1 回答 1

0

对于你想要完成的任务。我认为最好使用 AWK。您可以在以下网址找到关于 AWK 的优秀教程:http: //www.grymoire.com/Unix/Awk.html。您基本上需要更改 awk 的输入字段分隔符

awk -f',' foo.awk bar.dat

就排序问题而言,请遵循以下内容:http ://www.linuxquestions.org/questions/linux-general-1/how-to-use-awk-to-sort-243177/

于 2012-10-27T22:33:35.497 回答