首页 > 解决方案 > 用grep空格?

问题描述

我有一个这样的 csv 文件:

Monday
Tuesday
Wednesday
Thursday
Friday

我想用星期几的 csv 文件分析另一个 csv 文件。我的脚本需要星期一,分析文件并提取包含星期一这个词的所有行,然后切换到星期二等....

我使用这个命令来做到这一点:

grep -wf daysfile.csv myothercsv.csv > file.csv

该命令运行良好,但结果是:

Monday XXXX XXX XXX
Monday XXXX XXX XXX
Monday XXXX XXX XXX
Monday XXXX XXX XXX
Tuesday XXXX XXXX XXXX
Tuesday XXXX XXXX XXXX
Tuesday XXXX XXXX XXXX
Tuesday XXXX XXXX XXXX
Tuesday XXXX XXXX XXXX
Wednesday XXXX XXXX XXXX
Wednesday XXXX XXXX XXXX
Wednesday XXXX XXXX XXXX
Wednesday XXXX XXXX XXXX

但我想有这样的空间:

Monday XXXX XXX XXX
Monday XXXX XXX XXX
Monday XXXX XXX XXX
Monday XXXX XXX XXX

Tuesday XXXX XXXX XXXX
Tuesday XXXX XXXX XXXX
Tuesday XXXX XXXX XXXX
Tuesday XXXX XXXX XXXX

你能帮助我吗 ?

标签: bashshellawk

解决方案


只需将 grep 的输出通过管道传输到

perl -ape 'print "\n" if $previous and $previous ne $F[0]; $previous = $F[0]'
  • -p逐行读取输入并在处理后打印每一行
  • -a将每个输入行拆分为 @F 数组

推荐阅读