counter=$(grep -n 'ABC' $1 | sed 's/:[a-zA-Z0-9 ]*;//' > $2 | wc -l);
echo $counter; #Output is 0?
카운터의 값은 wc -l
의 출력이어야합니다. 왜 내가 0 인 걸까요? 나는 zsh을 사용하고 있습니다. 명령을 직접 실행하면 문제가 발생하지 않습니다. wc
과 뭔가 관계가 있지만 뭔가를 인쇄하지만 다른 것을 돌려 주겠습니까? 이 작업을 올바르게 수행하려면 어떻게해야합니까?bash pipe에서 명령을 평가했지만 반환 값이 잘못되었습니다.
내가하고있는 일은 무엇입니까?
grep을 사용하여 줄 번호를 인쇄하고 sed를 사용합니다. 줄의 내용을 제거하고 wc를 사용합니다. 출력의 줄 수를 계산합니다.
편집 :
내 속셈이 파일을 분할하는 것입니다
숨은 동기에. 그렇게하기 위해 일부 줄 번호를 식별하고 있습니다. grep을 사용하여 특정 텍스트를 찾고 있습니다 (그림에서 보듯이 SET SCHEMA
입니다). 줄의 내용이 줄 번호가되기를 원하지 않기 때문에 시작과 끝을 구분하여 줄을 잘라냅니다. wc -l을 사용하면 라인 수를 세고 있습니다.
파일로'sed'의 출력을 리디렉션하고, : 당신이
tee
명령을 사용할 수 있습니다 그렇게하십시오. –왜 내가 bash에서 이것을 직접 실행했을 때 대답을 얻을 수 있습니까? –
무엇을 의미합니까? 리디렉션을 제거하라는 메시지가 표시됩니다. 'counter = $ (grep -n'ABC '$ 1 | sed'/ : [a-zA-Z0-9] *; // '| wc -l);'('sed' 명령의'> $ 2 '를 제거하십시오). –