Function 重定向中出现函数调用错误的Awk
其中输入是文件的路径Function 重定向中出现函数调用错误的Awk,function,redirect,awk,Function,Redirect,Awk,其中输入是文件的路径 awk -F "|" 'function decToBin(dec) { printf "ibase=10; obase=2; $dec" | bc; } BEGIN {print $3" "$4" "$5" "$6" "$7" "decToBin($8)}' $Input 它在没有调用函数的情况下工作正常,但在引入函数decToBin()后,它给出了错误。它给出了如下错误: 1|2|1.00|0.46|0.44|1.12|49.88|3 2|2|1.00|0.45|0.
awk -F "|" 'function decToBin(dec) { printf "ibase=10; obase=2; $dec" | bc; } BEGIN {print $3" "$4" "$5" "$6" "$7" "decToBin($8)}' $Input
它在没有调用函数的情况下工作正常,但在引入函数decToBin()后,它给出了错误。它给出了如下错误:
1|2|1.00|0.46|0.44|1.12|49.88|3
2|2|1.00|0.45|0.55|1.13|50.12|11
被卡住了我不知道怎么做
请需要帮助这不行
bc
作为变量名,而不是命令名(awk的行为与shell不同)。由于变量未定义,因此将其视为空字符串。必须引用命令名:
awk: fatal: expression for `|' redirection has null string value
此外,$dec
不是dec
的值,而是字段号dec的值。同样,awk不是shell。你想要的是这样的东西:
$ awk 'BEGIN {printf "1+1\n" | "bc"}' /dev/null
2
myawkscript.awk:
$ awk 'BEGIN {dec = 21; printf "%d+%d\n", dec, dec | "bc"}' /dev/null
42
然后
给你
gawk -F"|" -f myawkscript.awk myfile
不出所料谢谢你,伙计!请告诉我一件事gawk-F“|”-F myscript.awk$Input>$Input为什么它不将输出重定向到同一个文件??因为您无法将文件重定向到自身;重定向会在命令启动前截断目标文件。所以命令会看到一个空的输入文件。好的,谢谢!我是否可以修改myawkscript.awk,将1011改为1 0 1 1,如果您有任何想法,请告诉我…只需在另一个插入空格的函数中包装decToBin($8)。在shell echo中“hello”| sed“s/(.)/\1/g”返回“h he l o”
gawk -F"|" -f myawkscript.awk myfile
1.00 0.46 0.44 1.12 49.88 11
1.00 0.45 0.55 1.13 50.12 1011