根据https://www.computerhope.com/unix/udiff.htm
该
diff
命令分析两个文件并打印不同的行。
我可以使用相同的diff
命令来比较两个字符串吗?
$ more file*
::::::::::::::
file1.txt
::::::::::::::
hey
::::::::::::::
file2.txt
::::::::::::::
hi
Run Code Online (Sandbox Code Playgroud)
$ diff file1.txt file2.txt
1c1
< hey
---
> hi
Run Code Online (Sandbox Code Playgroud)
而不是保存的内容hey
,并hi
为两个不同的文件,我可以直接读取呢?
顺便说一下,在下面的示例中没有命名hey
或 的文件hi
,这就是我收到No such file or directory
错误消息的原因。
$ diff hey hi
diff: hey: No such file or directory
diff: hi: No such file or directory
Run Code Online (Sandbox Code Playgroud)
是的,您可以diff
在两个字符串上使用,如果您从它们制作文件,因为diff
只会比较文件。
一种快捷方式是在支持这些的 shell 中使用进程替换:
diff <( printf '%s\n' "$string1" ) <( printf '%s\n' "$string2" )
Run Code Online (Sandbox Code Playgroud)
例子:
diff <( printf '%s\n' "$string1" ) <( printf '%s\n' "$string2" )
Run Code Online (Sandbox Code Playgroud)
在其他贝壳中,
printf '%s\n' "$string1" >tmpfile
printf '%s\n' "$string2" | diff tmpfile -
rm -f tmpfile
Run Code Online (Sandbox Code Playgroud)
在第二个示例中,一个文件包含第一个字符串,而第二个字符串diff
在标准输入中给出。 diff
使用包含第一个字符串的文件作为其第一个参数来调用。作为它的第二个参数,-
表示它应该读取标准输入(第二个字符串将通过 到达printf
)。