Linux
帶有附加管道的部分重定向
在遠端位置有一個自動生成的文件不斷變化,我只能通過
ssh user@ip cat luckyNumbers
它查看遠端文件告訴我今天的幸運數字並傳遞秘密加密消息。Today's lucky number are 1 2 3 asdsa@!#SAxAaas 21gv3sad ASD@!#
我的目標是
- 將幸運數字重定向
1 2 3
到 luckynumbers.txt 然後- 將文件的其餘部分通過管道傳輸到我的程序中
decoder
- 我想在不保存整個文件或再次請求文件的情況下執行此操作
我不確定是否可以像這樣拆分數據流。
這裡有幾種方法可以將 stdin 的第 2 行寫入特定文件,同時將所有其他行發送到 stdout。
使用 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 可能會添加一個。
cat luckynumber | tail -q -n 2 | head -q -n 1 > luckynumbers.txt && cat luckynumber | tail -w -n 1 | decoder
- 會拿起luckynumber的內容
- 悄悄地(不引用源文件)取出最後兩行
- 將倒數第二行發送到luckynumbers.txt
- 再次 拿起luckynumber的內容
- 快速只拔出最後一行
- 並將其通過管道傳輸到解碼器
我知道它對文件提出了第二個請求,並將嘗試對此進行改進,因此它的替換不會發出第二個請求(可能與tee),但現在,這就是我所擁有的。