Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell “怎么做?”;排序-t-k1,1n-k2,2n-k3,3n-k4,4n“;工作_Shell_Unix - Fatal编程技术网

Shell “怎么做?”;排序-t-k1,1n-k2,2n-k3,3n-k4,4n“;工作

Shell “怎么做?”;排序-t-k1,1n-k2,2n-k3,3n-k4,4n“;工作,shell,unix,Shell,Unix,我遇到过这个命令,它按ip对主机文件进行排序,但我无法分解语法,所以它会有意义。我所理解的是,第一部分意味着圆点被用作delimeter,然后我在所有逗号和其他参数中迷失了方向: $ sort -t . -k 1,1n -k 2,2n -k 3,3n -k 4,4n /etc/hosts 127.0.0.1 localhost.localdomain localhost 192.168.100.101 site1.com dev-db 192.168.100.102 site2.com pro

我遇到过这个命令,它按ip对主机文件进行排序,但我无法分解语法,所以它会有意义。我所理解的是,第一部分意味着圆点被用作delimeter,然后我在所有逗号和其他参数中迷失了方向:

$ sort -t . -k 1,1n -k 2,2n -k 3,3n -k 4,4n /etc/hosts

127.0.0.1 localhost.localdomain localhost
192.168.100.101 site1.com dev-db
192.168.100.102 site2.com prod-db
192.168.101.20  site3.com dev-web
192.168.101.21  site4.com prod-web

谢谢。

-k
指定字段范围
1,1
(以及其他分别表示的字段)只表示一个字段,确保排序优先从左到右,然后在已排序的子集内进行。附加的
n
意味着“对列进行数字排序”。

难道
sort-V
不会达到同样的效果吗?这将有助于解释您是如何“迷失在所有逗号中”——也就是说,当您阅读
man sort
的相关部分时,您如何解释它们?该文件中的哪种特定语言(最好在问题中引用)含义不清楚?请注意,有一种强烈的倾向是将“解释此代码”问题结尾为“过于宽泛”,除非它们非常明确地缩小了范围;看,我问了一个合理的问题,我应该道歉吗?也许你在比较正常句子中的语法和逗号时会感到困惑。当你认为逗号之间的部分应该放在一起时,你会感到困惑。不要看
2n-k3
,而是看
-k2,2n
。听起来您首先需要了解shell如何将其解析为一个单词序列。在某种程度上,逗号在第一次传递时是不相关的。shell在空格上拆分,产生
排序
-t
-k
1,1n
-k
2,2n
,等等。在这之后,问题就变成了
排序
如何解释作为其参数接收的剩余单词的问题。