是否可以在并排差异输出中显示行号?

发布于 2024-12-19 10:10:33 字数 515 浏览 0 评论 0原文

我将 diff 与 -y--suppress-common-lines 选项一起使用,输出几乎完美,除了我想查看更改的行号。

示例:

file1:

line a
line b
line c

file2:

line a
line B
line c
line d

命令和输出:

$ diff -y --suppress-common-lines file1 file2
line b                                                        | line B
                                                              > line d

这种选项组合是否可以通过 diff 实现,还是我需要其他工具?

I am using diff with the -y and --suppress-common-lines options and the output is almost perfect except I'd like to see the line numbers of the changes.

Example:

file1:

line a
line b
line c

file2:

line a
line B
line c
line d

command and output:

$ diff -y --suppress-common-lines file1 file2
line b                                                        | line B
                                                              > line d

Is this combination of options possible with diff or do I need another tool?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

天涯离梦残月幽梦 2024-12-26 10:10:33

不幸的是,-y选项在内部使用格式化样式(与--LFMT-line-format一样),您无法使用-y累积格式化命令>。
您无法从格式化参数中获取 -y 的作用,因此无法直接使用 diff 解决问题(我检查了 diff 3.2 源代码)。

您需要使用另一个工具。

Unfortunately the -y option uses the formatting style internally (as does --LFMT-line-format), you cannot cumulate formatting commands with -y.
You cannot obtain from formatting parameters what -y does, so you cannot workaround directly with diff (I checked diff 3.2 source code).

You need to use another tool.

转角预定愛 2024-12-26 10:10:33

如果您总是比较具有相同行号的行,则可以使用如下所示的内容:

$ awk 'NR==FNR{a[NR]=$0;next}{x=a[FNR];if($0!=x)printf("%s;%s;%s\n",FNR,x,$0)}' file1 file2
327;有る;ある
431;先ず;まず
543;連れて行く;連れていく
719;幾ら;いくら
1318;込む;混む
1415;かわいそう;可哀相
1713;だんだん;段々
2491;大みそか;大晦日
4120;もうける;儲ける
4510;ほほ笑む;微笑む
4512;もうかる;儲かる
5727;剥げる;剝げる

当 awk 处理第一个文件时,FNR(记录的文件编号)等于 NR文件。 next 语句跳到下一条记录。

If you are always comparing lines with the same line numbers, you can use something like this:

$ awk 'NR==FNR{a[NR]=$0;next}{x=a[FNR];if($0!=x)printf("%s;%s;%s\n",FNR,x,$0)}' file1 file2
327;有る;ある
431;先ず;まず
543;連れて行く;連れていく
719;幾ら;いくら
1318;込む;混む
1415;かわいそう;可哀相
1713;だんだん;段々
2491;大みそか;大晦日
4120;もうける;儲ける
4510;ほほ笑む;微笑む
4512;もうかる;儲かる
5727;剥げる;剝げる

FNR (file number of record) is equal to NR when awk is processing the first file. The next statement skips to the next record.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文