2014-03-12 62 views
0

將AWK腳本的多個結果保存到c shell變量中。將AWK的多個結果保存到shell變量中

我有一個簡單的AWK腳本在終端中運行,從輸入文本文件中查找最大值和最小值。

我們如何將這個最大值和最小值保存到c shell變量中以便稍後使用它。

這裏是AWK

awk 'NR == 1 { xmax=$1; xmin=$1 } \ 
    { if ($1>xmax) xmax=$1; if ($1<xmin) xmin=$1;} \ 
    END {printf "X-Min: %d\tX-Max: %d\n", xmin, xmax}' $inpfile 

我想保存這已經定義的變量讓說$ XMIN和$ XMAX

任何建議將是一個很大的幫助,我有SHELL沒有現成的經驗和AWK。

+0

你說「c shell」,但是把問題標記爲'bash'。你的意思是哪個外殼? – chepner

+0

對不起它的c shell,只是刪除了bash標籤 – Indigo

+0

從awk打印出來,從csh解析它。 –

回答

1

正如其他人所說的,你不能將值從awk傳遞到shell。

您需要依靠shell才能執行cmd替換。

回來時,我不得不爲CSH,我會做

setenv xmin_xmax = `awk 'NR == 1 { xmax=$1; xmin=$1 } \ 
{ if ($1>xmax) xmax=$1; if ($1<xmin) xmin=$1; printf("%d|%d\n", xmin, xmax}' $inpfile` 

setenv xmin = `echo "$xmin_xmax" | sed 's/|.*$//'` 
setenv xmax = `echo "$xmin_xmax" | sed 's/*.|//'` 

很抱歉,但我沒有訪問CSH與現在進行測試。當你在awk中進行cmd替換時,你可能需要更多的連續字符\來連接這些行。

如果您遇到問題,請將錯誤消息作爲註釋發佈,然後我會看看是否可以記住特殊的csh咒語。

編輯 或請參閱Grymoire CSH tips瞭解如何在csh中使用數組變量。 (我不記得這個!)

IHTH

相關問題