gpt4 book ai didi

linux - 相对于其他 shell 命令,排序命令是否看到数据流乱序?

转载 作者:太空宇宙 更新时间:2023-11-04 10:58:50 24 4
gpt4 key购买 nike

排序通过恢复已从“剪切”命令中删除的字段来表现出意外行为:

考虑以下 bash 管道:

history | cut -d' ' -f3- | grep mvn

这是输出的摘录:

 mvn  -pl sql/hbase -DMAVEN_OPTS="XX:MaxPermSize=394m -Xmx1500m" -Pyarn -Phadoop-2.3 -Phive  -Phbase install compile package -DskipTests
mvn -Dspark.testing.use-external-hbase=true -pl sql/hbase -Pyarn -Phadoop-2.3 -Phive -Phbase test -DwildcardSuites=org.apache.spark.sql.hbase.JoinsSuite
mvn -Dspark.testing.use-external-hbase=false -pl sql/hbase -Pyarn -Phadoop-2.3 -Phive -Phbase test - mvn -Dspark.testing.use-external-hbase=false -pl sql/hbase -Pyarn -Phadoop-2.3 -Phive -Phbase test - mvn -Dspark.testing.use-external-hbase=true -DforkMode=never -pl sql/hbase -Pyarn -Phadoop-2.3 -Phive -Phbase test -DwildcardSuites=org.apache.spark.sql.hbase.JoinsSuite
date; mvn -pl sql/hbase -DskipTests -Phbase -Pyarn -Phadoop-2.3 -Phive compile package install ; date
mvn -pl sql/hbase -DskipTests -Phbase -Pyarn -Phadoop-2.3 -Phive compile package install
history | grep mvn
mvn -Pyarn -Phadoop-2.3 install compile package -DskipTests
mvn -Phbase -Pyarn -Phadoop-2.3 install compile package -DskipTests
mvn -Phbase -Pyarn -Phadoop-2.3 clean install compile package -DskipTests

现在让我们附加排序命令:

history | cut -d' ' -f3- | grep mvn | sort

现在我们看到带有历史编号的第一列 - 剪切命令已经删除 - 神奇地重新出现了:

734  mvn -Pyarn -Phadoop-2.3 -Phive  install compile package -DskipTests
735 mvn -Pyarn -Phadoop-2.3 install compile package -DskipTests
745 mvn -pl sql/core -Pyarn -Phadoop-2.3 install compile package -DskipTests
748 mvn -pl sql/core -Pyarn -Phadoop-2.3 -DwildcardSuites=org.apache.spark.sql.SparkSQLJoinSuite test
763 mvn -Pyarn -Phadoop-2.3 install compile package -DskipTests
768 mvn -Pyarn -Phadoop-2.3 install compile package -DskipTests
769 mvn -pl sql/core -Pyarn -Phadoop-2.3 -DwildcardSuites=org.apache.spark.sql.SparkSQLJoinSuite test
798 mvn -pl sql/core -Pyarn -Phadoop-2.3 -DwildcardSuites=org.apache.spark.sql.SparkSQLJoinSuite test
825 mvn -Dspark.testing.use-external-hbase=false -Dlog4j.rootLogger=DEBUG,CA,FA -pl sql/hbase -Pyarn -Phadoop-2.3 -Phive -DwildcardSuites=org.apache.spark.sql.hbase.JoinsSuite
831 mvn -Dspark.testing.use-external-hbase=true -pl sql/hbase -Pyarn -Phadoop-2.3 -Phive -Phbase test -850 hist100 | grep mvn
855 mvn -Pyarn -Phadoop-2.3 install compile package -DskipTests

所以.. 为什么第一列(历史编号)回来了?这就像排序命令在剪切命令之前看到了历史命令的原始输出:

 cut -d' ' -f3-

有机会对其进行手术。

bash 流与 sort 的工作方式有什么不同吗??

更新 我安装并试用了 gnu sort "gsort"并且发生了相同的行为。

history | cut -d' ' -f3- | grep mvn | gsort

另一个更新 历史输出格式似乎有些困惑。这是另一个摘录:虽然它与上面的第一部分没有什么不同,但它旨在平息其中一个答案中提出的一些挥之不去的问题。具体来说,每条历史记录线没有两组数字。

history | tail -n 200 | grep mvn

1968 mvn -DskipTests=true -Pyarn -Phadoop-2.3 -Phive -Phbase install compile package
1969 mvn -Dspark.testing.use-external-hbase=false -DforkMode=never -pl sql/hbase -Pyarn -Phadoop-2.3 -Phive -Phbase test -DwildcardSuites=org.apache.spark.sql.hbase.JoinsSuite
1982 mvn -Dspark.testing.use-external-hbase=false -DforkMode=never -pl sql/hbase -Pyarn -Phadoop-2.3 -Phive -Phbase test -DwildcardSuites=org.apache.spark.sql.hbase.JoinsSuite
1985 mvn -Dspark.testing.use-external-hbase=false -DforkMode=never -pl sql/hbase -Pyarn -Phadoop-2.3 -Phive -Phbase test -DwildcardSuites=org.apache.spark.sql.hbase.JoinsSuite
1987 mvn -Dspark.testing.use-external-hbase=false -DforkMode=never -pl sql/hbase -Pyarn -Phadoop-2.3 -Phive -Phbase test -DwildcardSuites=org.apache.spark.sql.hbase.JoinsSuite
1989 mvn -Dspark.testing.use-external-hbase=false -DforkMode=never -pl sql/hbase -Pyarn -Phadoop-2.3 -Phive -Phbase test -DwildcardSuites=org.apache.spark.sql.hbase.JoinsSuite
1996 mvn -Dspark.testing.use-external-hbase=false -DforkMode=never -pl sql/hbase -Pyarn -Phadoop-2.3 -Phive -Phbase test -DwildcardSuites=org.apache.spark.sql.hbase.JoinsSuite
2010 mvn -Dspark.testing.use-external-hbase=false -DforkMode=never -pl sql/hbase -Pyarn -Phadoop-2.3 -Phive -Phbase test -DwildcardSuites=org.apache.spark.sql.hbase.JoinsSuite
2013 mvn -Dspark.testing.use-external-hbase=false -DforkMode=never -pl sql/hbase -Pyarn -Phadoop-2.3 -Phive -Phbase test -DwildcardSuites=org.apache.spark.sql.hbase.JoinsSuite
2014 mvn -Dspark.testing.use-external-hbase=true -pl sql/hbase -Pyarn -Phadoop-2.3 -Phive -Phbase test -DwildcardSuites=org.apache.spark.sql.hbase.JoinsSuite
2015 mvn -Dspark.testing.use-external-hbase=true -pl sql/hbase -Pyarn -Phadoop-2.3 -Phive -Phbase test -DwildcardSuites=org.apache.spark.sql.hbase.JoinsSuite
2016 mvn -Dspark.testing.use-external-hbase=true -DforkrkMode=never -pl sql/hbase -Pyarn -Phadoop-2.3 -Phive -Phbase test -DwildcardSuites=org.apache.spark.sql.hbase.JoinsSuite
2017 mvn -Dspark.testing.use-external-hbase=true -DforkMode=neve

另一个更新

history | grep 734


734 mvn -Pyarn -Phadoop-2.3 -Phive install compile package -DskipTests
1734 bashrc
2045 history | grep 734

最佳答案

与其剪掉线条,不如首先抑制它们。

fc -l 等同于 history 命令,尽管您可能需要给它一个起始行号; fc -l 1 通常适合我。

然后,fc-n 选项禁止打印行号。

这给了我 fc -nl 1

现在,剩下的“问题”是 fc 仍然喜欢回显前导 tab 字符,即使不打印行号。不过,您可以将其删除,它始终只是其中之一。

关于linux - 相对于其他 shell 命令,排序命令是否看到数据流乱序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27725439/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com