![중간 파일 없이 표준 입력의 다른 부분에서 작동](https://linux55.com/image/87833/%EC%A4%91%EA%B0%84%20%ED%8C%8C%EC%9D%BC%20%EC%97%86%EC%9D%B4%20%ED%91%9C%EC%A4%80%20%EC%9E%85%EB%A0%A5%EC%9D%98%20%EB%8B%A4%EB%A5%B8%20%EB%B6%80%EB%B6%84%EC%97%90%EC%84%9C%20%EC%9E%91%EB%8F%99.png)
FILE1을 생성하지 않고 리디렉션이나 파이프를 통해 이를 수행하는 쉬운 방법이 있습니까? 첫 번째 줄과 마지막 줄을 건드리지 않고 process1의 출력 본문에 process2를 적용하고 싶습니다.
process1 >FILE1
head -n 3 FILE1
tail -n +4 FILE1|head -n -4|process2 # producing output
tail -n 4 FILE1
rm -f FILE1
답변1
파이프라인을 통해 처리할 수 있다고 생각합니다. 첫 번째 행과 마지막 행, 예를 들어 3행을 제외하고 process1의 모든 행을 처리합니다.
process1 | tail -n +4 | head -n -3 | process2
답변2
이것이 무엇을 달성해야 하는지는 확실하지 않지만 중간 파일을 사용하지 않고 수행 중인 작업을 정확하게 수행하는 솔루션은 다음과 같습니다.
#!/bin/bash
# prevent LF from being removed
export IFS=' '
output=`process1`
echo $output | head -n 3
echo $output | tail -n +4 | head -n -4 | process2 # producing output
echo $output | tail -n 4