#!/usr/bin/tcsh
cmd='BEGIN{c=0}{
如果($1=="Net"){列印$0}。
如果($1=="v14")
{
如果($4>=200)
{列印 "在 "1美元 "處下降超過200}。
}
}'
awk -f "$cmd" input_file.txt > output_file.txt
我試圖執行shell腳本,其中包含多行awk腳本。 將awk腳本(尤其是多行awk腳本)存盤到一個變數cmd & 然后在awk -f "$cmd" input_file.txt > output_file.txt中執行該cmd。
這給出了一個錯誤,如下所示
awk: fatal: can't open source file `BEGIN{c=0}{
如果($1=="Net"){列印$0}。
如果($1=="v14")
{
如果(4>=200)
{列印 "在1美元處掉落超過200}。
}
}' for read (No such file or directory)
我的問題是,我如何執行里面包含多行awk腳本的shell腳本? 你能不能幫我解決這個問題,因為我在谷歌/參考手冊中搜索后也沒有弄清楚?
uj5u.com熱心網友回復:
當你想傳遞一個檔案名給腳本執行時,你會使用awk -f。
這里你的awk腳本是一個行內字串,所以只要去掉-f選項就可以解決你的問題。
awk "$cmd" input_file.txt > output_file.txt
uj5u.com熱心網友回復:
這是一個等價的腳本
$1=="Net"
$1=="v14" && $4> =200 {print "Drop more than 200 at "$1}。
保存到一個檔案中,例如test.awk,然后以
$ awk -f test.awk input_file > output_file
或者,對于簡單的一次性腳本,你可以只
$ awk '1=="Net"; 1=="v14" && 4>=200 {print "Drop more than 200 at "1}'/span> input_file > output_file
顯然,上面這一行也可以插入到一個shell腳本中。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/309907.html
標籤:
上一篇:在Shell腳本中使用Jq比較兩個JSON檔案并從檔案中輸出不匹配的值
下一篇:從txt檔案中提取文本
