stdin输入到shell脚本中的awk

时间:2017-03-07 13:06:55

标签: bash shell awk

在bash shell上我使用命令

cat filename | cut -d, -f4 | sort -n | awk '
  BEGIN {
    c = 0;
    sum = 0;
  }
  $1 ~ /^[0-9]*(\.[0-9]*)?$/ {
    a[c++] = $1;
    sum += $1;
  }
  END {
    ave = sum / c;
    if( (c % 2) == 1 ) {
      median = a[ int(c/2) ];
    } else {
      median = ( a[c/2] + a[c/2-1] ) / 2;
    }
    OFS="\t";
    print sum, c, ave, median, a[0], a[c-1];
  }
'

从终端运行时,此工作正常 但是我的shell脚本在尝试在脚本中使用上述命令并运行脚本时显示awk用法。 我做了

#!/bin/sh

diffFile="del.csv"



x=$(cat $diffFile | cut -d, -f4 | sort -n | awk 
  'BEGIN {
    c = 0;
    sum = 0;
  }
  $1 ~ /^[0-9]*(\.[0-9]*)?$/ {
    a[c++] = $1;
    sum += $1;
  }
  END {
    ave = sum / c;
    if( (c % 2) == 1 ) {
      median = a[ int(c/2) ];
    } else {
      median = ( a[c/2] + a[c/2-1] ) / 2;
    }
    OFS="\t";
    print sum, c, ave, median, a[0], a[c-1];
  }'
)

echo "$x"

但是这显示了运行脚本时的awk用法。我该如何解决这个问题。

0 个答案:

没有答案