我创建了简单的脚本:
#!/bin/sh
column=${1:-1}
awk '{colawk='$column'+1; print colawk}'
但是当我跑步时:
ls -la | ./Column.sh 4
我收到输出: 五 五 五 5
但我预计会收到第5栏。为什么会出现这个错误?
答案 0 :(得分:5)
我相信这会做你在你的例子中尝试过的事情:
#!/bin/sh
let "column=${1:-1} + 1"
awk "{print \$$column}"
但是,我不明白你为什么要在列索引中添加一个?然后,您将无法直观地访问第一列。
我会这样做:
#!/bin/sh
let "column=${1:-1}"
awk "{print \$$column}"
./Column.sh
的参数将是您想要的列号,0
将为您提供所有列,而不带参数的调用将列索引默认为1
。
我知道bash。我想用AWK算术
在这种情况下,如何:
#!/bin/sh
column=${1:-1}
awk 'BEGIN{colawk='$column'+1} {print $colawk}'
或者,简单地说:
#!/bin/sh
awk 'BEGIN{colawk='${1:-1}'+1} {print $colawk}'
我在剧本中更改了两件事:
BEGIN{}
块中,因为它只需要完成一次而不是为每个输入行重复。print $colawk
”而不是“print colawk
”,因此我们打印的是colawk
索引的列,而不是其值。