명령 결과를 -<문자> <인수> 옵션으로 파이프하는 방법은 무엇입니까? (공간 없음)
문제
이 파이프 명령 세트가 있습니다.
grep -n '*' file.txt | head -n1 | awk -F\: '{print $1-1;}'
먼저 별표를 찾는 곳에 대한 이전 줄을 알려줍니다. 이제 이전 라인 파이핑을 얻고 싶습니다.
head -n<that previous line number>
헤드는 예를 들어 공백없이 -n 인수를 즉시 다음과 같은 숫자를 필요로합니다.
head -n4
어떻게 할 수 있습니까? 추가를 허용하지 않습니다
| head -n
명령 세트의 끝에. 내 검색은 결실이 없었습니다. 감사!
해결책
값을 대체하기 위해 백 틱을 원합니다.
head -n`grep -n '*' file.txt | head -n1 | awk -F\: '{print $1-1;}'` file.txt
또는 여러 줄에서 비슷한 것 :
LINENO=`grep -n '*' file.txt | head -n1 | awk -F\: '{print $1-1;}'`
head -n${LINENO} file.txt
다른 팁
그냥하지 그래요 :
awk -- '{if (!/*/) print $0; else exit}' file.txt
또는 더 빠릅니다.
awk -- '/*/ {exit}; {print}' file.txt
Xargs를 사용할 수도 있다고 생각합니다. 같은 것 :
grep -n '*' file.txt | head -n1 | awk -F\: '{print $1-1;}' | xargs -I % head -n% file.txt
제휴하지 않습니다 StackOverflow