我有一个名为threads.log的文件,这是该文件的一个示例
Threads: 40
Threads: 1
Threads: 1
Threads: 3
Threads: 5
Threads: 5
Threads: 1
Threads: 5
// rest
我在终端这样做:
echo $(cat threads.log | grep -o [0-9]*)
这是输出:1 1 1 1 1 1 1
而不是预期的数字。为什么会这样?
答案 0 :(得分:7)
这一行有很多错误(或次优)。
echo $(cat threads.log | grep -o [0-9]*)
包裹echo
完全没用(好吧它做了什么,但没什么好处),删除它。
cat threads.log | grep -o [0-9]*
没有必要cat | grep
grep直接获取文件。
grep -o [0-9]* threads.log
[0-9]*
是一个shell glob。如果你有一个以当前目录中的数字开头的文件,我希望你这样做,那么shell会将[0-9]*
展开到匹配文件列表中,而你的grep
将不会获得参数你期待。引用模式。
grep -o '[0-9]*' threads.log
当它可以匹配零位数并且不产生输出时。您需要一位或多位数字,因此请使用\+
。
grep -o '[0-9]\+' threads.log