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