원격지에는 계속 바뀌는 자동 생성 파일이 있는데, 나는 ssh user@ip cat luckyNumbers
그것을 통해서만 원격지 파일을 볼 수 있고, 오늘의 행운의 숫자를 알려주고, 비밀 암호화된 메시지를 전달해준다.
Today's lucky number are
1 2 3
asdsa@!#SAxAaas 21gv3sad ASD@!#
내 목표는
- 행운의 숫자를
1 2 3
Luckynumbers.txt로 리디렉션한 다음 - 나머지 파일을 내 프로그램에 파이프하세요.
decoder
- 전체 파일을 저장하거나 파일에 대한 두 번째 요청을 하지 않고 이 작업을 수행하고 싶습니다.
이렇게 데이터 스트림을 분할하는 것이 가능한지 잘 모르겠습니다.
답변1
다음은 다른 모든 라인을 stdout으로 보내는 동안 stdin의 라인 2를 특정 파일에 쓰는 여러 가지 방법입니다.
sed를 사용하세요:
ssh remotehost cat luckynumbers |
sed -e '2 { w luckynumbers.txt
d
}' |
decoder
awk를 사용하세요:
ssh remotehost cat luckynumbers |
awk 'NR == 2 { print > "luckynumbers.txt" }
NR != 2 { print }' |
decoder
입력의 마지막 줄이 줄 바꿈으로 끝나지 않으면 awk가 줄 바꿈을 추가할 수 있습니다.
답변2
cat luckynumber | tail -q -n 2 | head -q -n 1 > luckynumbers.txt && cat luckynumber | tail -w -n 1 | decoder
- 다음을 얻을 것이다행운의 숫자
- 조용히 (소스 파일을 인용하지 않고) 마지막 두 줄을 꺼내십시오.
- 마지막 줄에서 두 번째 줄을 다음으로 보냅니다.행운의숫자.txt
- 콘텐츠 픽업행운의 숫자다시
- 마지막 행만 빠르게 제거
- 그리고 그것을 파이프로디코더
나는 그것이 파일에 대해 두 번째 요청을 한다는 것을 알고 있으며 대체 파일이 두 번째 요청을 하지 않도록 이를 개선하려고 노력할 것입니다(아마도티), 그러나 지금은 이것이 내가 가지고 있는 것입니다.