评估 bash 管道中的命令但 return 值错误
Evaluating a command in bash pipe but return value is wrong
counter=$( grep -n 'ABC' | sed 's/:[a-zA-Z0-9 ]*;//' > | wc -l );
echo $counter; #Output is 0?
计数器的值应该是wc -l
的输出吧?为什么我发现它是零?我使用 zsh。如果我直接执行命令,我不会遇到任何问题。是否与 wc
有关,它打印一些东西但 return 其他东西?我该如何正确执行此操作。
我在做什么?
我正在使用 grep 和 sed 打印行号我正在删除行的内容并使用 wc 我正在计算输出的行数。
编辑:
直接在 shell
别有用心:
我别有用心的是要拆分一个文件。为此,我确定了一些行号。因此,使用 grep 我正在寻找特定文本(如您所见,它是 SET SCHEMA
,在图片中)。我不想让行的内容只是行号,所以我通过识别开始和结束来剪掉这些行。使用 wc -l 我正在计算行数。
尝试:
counter=$( grep -n 'ABC' | sed 's/:[a-zA-Z0-9 ]*;//' | wc -l );
echo $counter; #Output is 0?
你想用 sed 命令达到什么目的?
你也可以使用这个:
counter=$( grep -n 'ABC' | wc -l );
这个命令:
grep -n 'ABC'
获得以下输出:
1:ABC 3:ABC
现在您要计算 'ABC' 的出现次数。在这种情况下2,对吗?
一个简单的 wc grep 就可以完成工作,还是我错了?
grep -n 'ABC' | wc -l
wc 联机帮助页:
-l, --行
打印换行数
您不能同时将输出直接重定向到管道和文件。为此,您可以使用 tee
命令:
... | sed 's/:[a-zA-Z0-9 ]*;//' | tee "" | ...
counter=$( grep -n 'ABC' | sed 's/:[a-zA-Z0-9 ]*;//' > | wc -l );
echo $counter; #Output is 0?
计数器的值应该是wc -l
的输出吧?为什么我发现它是零?我使用 zsh。如果我直接执行命令,我不会遇到任何问题。是否与 wc
有关,它打印一些东西但 return 其他东西?我该如何正确执行此操作。
我在做什么?
我正在使用 grep 和 sed 打印行号我正在删除行的内容并使用 wc 我正在计算输出的行数。
编辑:
直接在 shell
别有用心:
我别有用心的是要拆分一个文件。为此,我确定了一些行号。因此,使用 grep 我正在寻找特定文本(如您所见,它是 SET SCHEMA
,在图片中)。我不想让行的内容只是行号,所以我通过识别开始和结束来剪掉这些行。使用 wc -l 我正在计算行数。
尝试:
counter=$( grep -n 'ABC' | sed 's/:[a-zA-Z0-9 ]*;//' | wc -l );
echo $counter; #Output is 0?
你想用 sed 命令达到什么目的?
你也可以使用这个:
counter=$( grep -n 'ABC' | wc -l );
这个命令:
grep -n 'ABC'
获得以下输出:
1:ABC 3:ABC
现在您要计算 'ABC' 的出现次数。在这种情况下2,对吗?
一个简单的 wc grep 就可以完成工作,还是我错了?
grep -n 'ABC' | wc -l
wc 联机帮助页:
-l, --行 打印换行数
您不能同时将输出直接重定向到管道和文件。为此,您可以使用 tee
命令:
... | sed 's/:[a-zA-Z0-9 ]*;//' | tee "" | ...