[英]Piping and redirect in bash shell
我想創建一個腳本,該腳本將通過管道輸出任何命中的輸出(此腳本將始終是最后一個運行的腳本),將其保存到臨時文件中,然后刪除該臨時文件作為腳本的最后一行。
例:
cat blah | ./scripta.sh | ./anotherscript.sh | ./yetanotherscript |./finalscript
問題在於我們並不總是同時運行所有腳本。 一旦可能是這樣的:
cat blah | ./anotherscript.sh | ./finalscript.sh
要么
cat blah | ./anotherscript.sh | yetanotherscript.sh | ./finalscript.sh
等等...
腳本將數據抓取為名為moo的文件后,將按以下方式對其進行處理
awk < moo 'NR%20==0 {print "\nYear Eng Disp. Cyl City FE Hwy FE Model\n" } {print} END{ print "total lines: " NR}'
然后可以添加嗎
rm -r \file\path\to\where\is\moo
作為最后一行?
默認情況下,“ awk”實用程序從standard in讀取,因此您可以將其放在shell腳本中:
#!/bin/bash
awk 'NR%20==0 {print "\nYear Eng Disp. Cyl City FE Hwy FE Model\n" } {print} END{ print "total lines: " NR}'
您甚至可以編寫一個可執行的awk腳本並通過管道將其傳遞給該腳本:
#!/usr/bin/awk
NR%20==0 {
print "\nYear Eng Disp. Cyl City FE Hwy FE Model\n"
}
{
print
}
END {
print "total lines: " NR
}
使用此方法,聽起來好像不需要任何類型的臨時文件。 但是,如果這樣做,您也可以這樣做:
#!/bin/bash
cat > /tmp/tmpfile.txt
# Do some things with the file.
rm /tmp/tmpfile.txt
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.