Linux 使用shell或diff命令从两个csv文件中提取修改和添加的行

Linux 使用shell或diff命令从两个csv文件中提取修改和添加的行,linux,bash,shell,diff,Linux,Bash,Shell,Diff,我有两个csv文件F1和F2,它们的行顺序相同,我想通过比较F2中的文件F1和F2来提取更改/添加的行 我尝试了diff命令,但我看到了变化。如何读取模式并从F2中提取线条 F11文件: 1234,Joe,pieter,joe@gmail.com,male,22 1235,Shally,Jonse,shally@yahoo.com,female,24 1235,Harry,poter,harry@gmail.com,male,21 1235,Helen,Jairag,helen@gmail.co

我有两个csv文件F1和F2,它们的行顺序相同,我想通过比较F2中的文件F1和F2来提取更改/添加的行

我尝试了diff命令,但我看到了变化。如何读取模式并从F2中提取线条

F11文件:

1234,Joe,pieter,joe@gmail.com,male,22
1235,Shally,Jonse,shally@yahoo.com,female,24
1235,Harry,poter,harry@gmail.com,male,21
1235,Helen,Jairag,helen@gmail.com,female,21
2585,Dinesh,Jairag,helen@gmail.com,female,21
F2文件2:

1234,Joe,pieter,joe@gmail.com,male,22
1235,Shally,Jonse,shally@yahoo.com,female,24
1235,Harry,Potter,harry@gmail.com,male,21
1235,Helen,Jairag,helen@gmail.com,female,21
执行的命令:

diff F2 F1
输出:

3c3
< 1235,Harry,Potter,harry@gmail.com,male,21
---
> 1235,Harry,poter,harry@gmail.com,male,21
4a5
> 2585,Dinesh,Jairag,helen@gmail.com,female,21

我知道您想从文件2中提取更改/添加的行! 因此,在您的示例中,File2中只有一行更改,而File2中没有添加行。 diff的基本调用模式是diff-old-new,输出告诉您需要做什么来更新旧的。因此,要了解文件2中的不同之处,可以将其用作第二个参数。我建议使用-u选项来区分。这将为您提供文件2中需要在文件1中更改/添加的每一行 +在第一个位置:

diff -u File1 File2
给予

现在只过滤以+开头的行,前两行除外:

diff -u data1 data2 | \
  awk 'NR > 2 && $0 ~ /^+/ {print substr($0,2)}'

1235,Harry,Potter,harry@gmail.com,male,21
或者反过来说:

diff -u data2 data1 | \
  awk 'NR > 2 && $0 ~ /^+/ {print substr($0,2)}'

1235,Harry,poter,harry@gmail.com,male,21
2585,Dinesh,Jairag,helen@gmail.com,female,21

我知道您想从文件2中提取更改/添加的行! 因此,在您的示例中,File2中只有一行更改,而File2中没有添加行。 diff的基本调用模式是diff-old-new,输出告诉您需要做什么来更新旧的。因此,要了解文件2中的不同之处,可以将其用作第二个参数。我建议使用-u选项来区分。这将为您提供文件2中需要在文件1中更改/添加的每一行 +在第一个位置:

diff -u File1 File2
给予

现在只过滤以+开头的行,前两行除外:

diff -u data1 data2 | \
  awk 'NR > 2 && $0 ~ /^+/ {print substr($0,2)}'

1235,Harry,Potter,harry@gmail.com,male,21
或者反过来说:

diff -u data2 data1 | \
  awk 'NR > 2 && $0 ~ /^+/ {print substr($0,2)}'

1235,Harry,poter,harry@gmail.com,male,21
2585,Dinesh,Jairag,helen@gmail.com,female,21

你的问题不是很清楚,你能添加预期输出吗?谢谢我添加了预期输出,你的问题不是很清楚,你能添加预期输出吗?谢谢我添加了预期输出,谢谢,它有助于提取行并写入新文件谢谢,它有助于提取行并写入新文件谢谢Theodros,这个解决方案也有助于解决我的问题谢谢Theodros,这个解决方案也有助于解决我的问题