2014-03-12 338 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

相关问题