unix 从diff输出中删除多余字符

nr7wwzry  于 2022-11-29  发布在  Unix
关注(0)|答案(2)|浏览(178)

我有下面的输出从unix:

$ diff -y --suppress-common-lines backup.txt newfile.txt
                                                              > `jjj' int,

我只需要jjj:int作为输出。已尝试以下操作,但未按预期工作:

$ diff -y --suppress-common-lines backup.txt newfile.txt | grep -i '>' |tr -d '[>]'  |sed 's/,//g'
uinbv5nw

uinbv5nw1#

建议尝试gawk脚本:

diff -y --suppress-common-lines backup.txt newfile.txt | gawk '{print $1 ":" $2}' FPAT="[[:alnum:]]+"
pb3skfrl

pb3skfrl2#

最常见的原因是:
1.您的文件被编码为非ASCII文件,最常见的格式为UTF-8
(Save ASCII格式的文本文件。)
1.您将在带有颜色的命令shell中运行此命令。
(颜色实际上是ANSI字符,会造成sed的混乱。)
1.您使用了与 *nix操作系统(\n)不同的EOL对文件进行编码,例如\r\n(Windows)或\r(MacOS)。
1.文件中有隐藏的制表符(\t)。
修复上述问题后,请尝试以下操作:

diff -Ewy -r --suppress-common-lines -aB -W 512 file.txt file2.txt | tr -d '[>]'

相关问题