Lur*_*rco 8 bash diff awk environment-variables
在初学者的Bash 指南(第3.2.1.2 节。局部变量)中有一个示例命令,它应该列出所有不在环境变量中的局部变量,或者我认为:
diff set.sorted printenv.sorted | grep "<" | awk '{ print $2 }'
Run Code Online (Sandbox Code Playgroud)
除了*.sorted
部分,我相信我了解有关此命令的所有内容。此外,这个命令在我的 Bash 上不起作用,特别是因为上述元素。这是响应(这是No such file or directory的波兰语版本):
diff: set.sorted: Nie ma takiego pliku ani katalogu
diff: printenv.sorted: Nie ma takiego pliku ani katalogu
Run Code Online (Sandbox Code Playgroud)
值得注意的是,我使用的是 Ubuntu 14.04,其默认安装几乎没有变化。
正因为如此,我无法在我的 Bash shell 中分析这个命令,我也无法在谷歌上找到任何关于这个的东西,除了我从中获取这个命令的教程。
我将不胜感激,因为我以前从未遇到过这样的表达方式。
Ste*_*itt 23
它们不是表达式,它们是生成的文件的文件名,如下所示:
printenv | sort > printenv.sorted
set | sort > set.sorted
Run Code Online (Sandbox Code Playgroud)
文档中并不清楚,所以您的困惑是可以理解的!
请注意,您可能需要帮助diff
并grep
强制他们将输入视为文本(使用-a
);环境变量可以包含值,这将导致它们将输入视为二进制,这不会产生任何有用的东西:
diff -a set.sorted printenv.sorted | grep -a "<" | awk '{ print $2 }'
Run Code Online (Sandbox Code Playgroud)
更好的是,使用comm
来比较两个文件:
comm -23 set.sorted printenv.sorted
Run Code Online (Sandbox Code Playgroud)
您可以使用进程替换来替换文件:
comm -23 <(set|sort) <(printenv|sort)
Run Code Online (Sandbox Code Playgroud)
以避免创建文件。
归档时间: |
|
查看次数: |
1454 次 |
最近记录: |