중간 파일 없이 표준 입력의 다른 부분에서 작동

중간 파일 없이 표준 입력의 다른 부분에서 작동

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

관련 정보