我有一个数组,想要将一个文件的列与数组元素相乘。但是使用数组元素的乘法不起作用。
Input.file
chr1 100 150 3.5
chr1 200 450 10.5
chr1 300 950 9.5
.....
预期输出
2
21
19
....
代码:
array=(2 3 4 5)
awk '{print $4*"${array[0]}"}' Input.file
我的外壳
echo $SHELL
/bin/bash
此乘法返回所有0值。我的代码有什么问题?
答案 0 :(得分:1)
好的,谢谢你的更新。您仍然没有说出哪个特定的shell,但问题是单引号内的所有内容都是特定于awk的,因此array[0]
中有一个awk变量(关联数组),而不是shell变量同名。尝试在单引号之外获取数组引用;您需要做的就是将这些双引号更改为单引号我认为:
awk '{print $4*'${array[0]}'}' Input.file
要查找shell,您可以使用ps
命令查找名称以sh
结尾的进程:
$ ps
PID PPID PGID WINPID TTY UID STIME COMMAND
2396 1 2396 2396 ? 197612 Oct 16 /usr/bin/mintty
3480 2396 3480 3424 pty0 197612 Oct 16 /usr/bin/bash
2500 3480 2500 224 pty0 197612 09:53:03 /usr/bin/ps
常见的shell名称为:ksh
,sh
,csh
,bash
。我的是bash
。
答案 1 :(得分:1)
如果您只使用数组中的一个元素,则可以将其作为变量传递给awk脚本
awk -v s="${array[0]}" '{print s*$4}' input.file