Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 我的主要';s函数声明为_Bash_Shell_Awk - Fatal编程技术网

Bash 我的主要';s函数声明为

Bash 我的主要';s函数声明为,bash,shell,awk,Bash,Shell,Awk,是我每次编译文件时都会遇到的错误,该错误将我引用到第7行,这是我声明main()函数的地方 我的main函数声明为 int main(int argc,char*argv[]) 有人知道这是什么原因吗 非常感谢您的帮助 第1-6行是无需制作单行awk脚本将其嵌入shell脚本。使用单引号时,它会自动处理多行 for ARG in "$@" do postcode=`echo "$ARG" | sed -e 's/\(.*\)/\U\1/'` areacode=`echo "$po

是我每次编译文件时都会遇到的错误,该错误将我引用到第7行,这是我声明main()函数的地方

我的main函数声明为

int main(int argc,char*argv[]) 有人知道这是什么原因吗

非常感谢您的帮助


第1-6行是

无需制作单行awk脚本将其嵌入shell脚本。使用单引号时,它会自动处理多行

for ARG in "$@"
do
    postcode=`echo "$ARG" | sed -e 's/\(.*\)/\U\1/'`
    areacode=`echo "$postcode" | sed -e 's/.*\(^[A-Z][A-Z]*\).*/\1/' | sed -e 's/\(.*\)/\L\1/'`
    awk  -v pcode="\"""$postcode""\"" '
        BEGIN {FS = ","}
        {if (pcode == $1){ print $1", " $3", " $4 }}
    ' < "$areacode".csv 
done
“$@中的参数的
”
做
邮政编码=`echo“$ARG”| sed-e's/\(.*\)/\U\1/'`
区号=`echo“$postcode”| sed-e's/*\(^[A-Z][A-Z]*\)./\1/'| sed-e's/\(.\)/\L\1/'`
awk-v pcode=“\”“”$postcode“\”“”
开始{FS=“,”}
{if(pcode==1){print$1'、“$3”、“$4}}
“<”$areacode.csv
完成

如果我理解正确,您正试图使它成为只有一个shell脚本,而不是一个shell脚本和一个awk acript,对吗

调用
awk
时,可以将awk程序放在命令行上。用单引号引起来就行了

awk 'BEGIN {FS = ","} {if....}' -v pcode="\"""$postcode""\"" < "$areacode".csv
awk'BEGIN{FS=“,”}{if..}'-v pcode=“\”“”$postcode“\”“<”$areacode.csv

那么您就没有一个单独的.awk文件了。

可能是这样的吗

for ARG in "$@"
do
    postcode=`echo "$ARG" | sed -e 's/\(.*\)/\U\1/'`
    areacode=`echo "$postcode" | sed -e 's/.*\(^[A-Z][A-Z]*\).*/\1/' | sed -e 's/\(.*\)/\L\1/'`
    awk -F, -vOFS=, -v pcode="$postcode" \
      '$1 == pcode {print $1, $3, $4}' < "$areacode".csv
done
“$@中的参数的
”
做
邮政编码=`echo“$ARG”| sed-e's/\(.*\)/\U\1/'`
区号=`echo“$postcode”| sed-e's/*\(^[A-Z][A-Z]*\)./\1/'| sed-e's/\(.\)/\L\1/'`
awk-F,-vOFS=,-v pcode=“$postcode”\
“$1==pcode{print$1,$3,$4}”<“$areacode.csv”
完成

未经测试,因为您没有提供任何示例输入和预期输出,但看起来您正试图这样做:

awk -v args="$@" '
BEGIN {
   FS = ","
   OFS = ", "
   n = split(args,argA)
   for (i=1; i<=n; i++) {
      arg = argA[i]
      match(arg,/[[:alpha:]]+/)
      areacode = substr(arg,RSTART,RLENGTH)
      ARGV[++ARGC] = tolower(areacode) ".csv"
      postcodes[ARGC] = "\"" toupper(arg) "\""
   }
}
FNR == 1 { pcode = postcodes[++argInd] }
$1 == pcode { print $1, $3, $4 }
'
awk-v args=“$@”
开始{
FS=“,”
OFS=“,”
n=拆分(args,argA)

对于(i=1;如果您发布一些示例输入和预期输出,而不是让我们尝试了解您的sed命令等在做什么,iIt将更有用。无论您在做什么,我相信它都可以在一个简单的awk命令中完成。因此,原来的shell+awk问题现在已经消失,并被一个完全无关的C取代(大概)问题。真是浪费时间。。。