Shell “怎么做?”;排序-t-k1,1n-k2,2n-k3,3n-k4,4n“;工作
我遇到过这个命令,它按ip对主机文件进行排序,但我无法分解语法,所以它会有意义。我所理解的是,第一部分意味着圆点被用作delimeter,然后我在所有逗号和其他参数中迷失了方向: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
$ 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
,等等。在这之后,问题就变成了排序
如何解释作为其参数接收的剩余单词的问题。