Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.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
Sed 在bash管道中计算命令,但返回值错误_Sed_Grep_Zsh_Piping_Wc - Fatal编程技术网

Sed 在bash管道中计算命令,但返回值错误

Sed 在bash管道中计算命令,但返回值错误,sed,grep,zsh,piping,wc,Sed,Grep,Zsh,Piping,Wc,计数器的值应该是wc-l的输出,对吗?为什么我发现它是零?我使用zsh。如果我直接执行命令,我不会遇到任何问题。它打印某些内容,但返回其他内容是否与wc有关?如何正确地执行此操作 我在做什么 我使用grep打印行号,使用sed删除行内容,使用wc计算输出的行数 编辑: 直接在外壳上 别有用心: 我的不可告人的动机是分裂一个文件。为此,我确定了一些行号。因此,我使用grep查找某些文本(如图中的SET SCHEMA)。我不希望行的内容只是行号,所以我通过标识开始和结束来剪切行。使用wc-l

计数器的值应该是
wc-l
的输出,对吗?为什么我发现它是零?我使用zsh。如果我直接执行命令,我不会遇到任何问题。它打印某些内容,但返回其他内容是否与
wc
有关?如何正确地执行此操作


我在做什么

我使用grep打印行号,使用sed删除行内容,使用wc计算输出的行数


编辑:

直接在外壳上


别有用心:

我的不可告人的动机是分裂一个文件。为此,我确定了一些行号。因此,我使用grep查找某些文本(如图中的
SET SCHEMA
)。我不希望行的内容只是行号,所以我通过标识开始和结束来剪切行。使用wc-l我正在数行。

试试:

counter=$( grep -n 'ABC' $1 | sed 's/:[a-zA-Z0-9 ]*;//' > $2 | wc -l );

echo $counter; #Output is 0?
您希望使用sed命令实现什么

您还可以使用以下选项:

counter=$( grep -n 'ABC' $1 | sed 's/:[a-zA-Z0-9 ]*;//' | wc -l );

echo $counter; #Output is 0?
此命令:

counter=$( grep -n 'ABC' $1 | wc -l );
获取以下输出:

grep -n 'ABC' $1
现在要计算“ABC”的出现次数。在这种情况下是2,对吗

一个简单的grep和wc一起完成任务,还是我错了

1:ABC 3:ABC
主页:

-l、 --台词
打印换行符计数

不能同时将输出重定向到管道和文件。为此,可以使用
tee
命令:

grep -n 'ABC' $1 | wc -l

如你所见,我使用sed命令将行号打印到一个文件中。你能告诉我你的结果应该是什么吗?我会尽力帮助您。您正在将
sed
的输出重定向到一个文件,因此
wc
将始终计数为0行。为什么在Bash中直接运行此命令时我会得到答案?您是什么意思?我告诉您删除重定向:
counter=$(grep-n'ABC'$1 | sed's/:[a-zA-Z0-9]*;/'| wc-l)
(删除
sed
命令的
$2
)。它起作用了。但是,请检查edit我不明白为什么重定向直接在终端上工作?如果你只是重定向命令(没有tee),你应该看不到任何输出在终端中没有重定向screenshot@TarunMaganti:啊,我错过了,我没有可用的
zsh
测试,所以我不知道,但是
tee
应该可以在所有shell上工作
zsh
有一个选项(
MULTIOS
),允许在一个命令上进行多个重定向;这就像运行隐式
tee
... | sed 's/:[a-zA-Z0-9 ]*;//' | tee "$2" | ...