如何在shell脚本中将几个shell变量传递给awk?

out*_*ker 1 linux shell awk

我编写了一个shell脚本来获取任何列.该脚本是:

#!/bin/sh
awk '{print $c}' c=${1:-1}
Run Code Online (Sandbox Code Playgroud)

所以我可以称之为

ls -l | column 2
Run Code Online (Sandbox Code Playgroud)

但是我如何为多列实现它?说,我想要的东西:

ls -l | column 2 3
Run Code Online (Sandbox Code Playgroud)

gle*_*man 6

在这种情况下,我根本不会使用awk:

columns() { tr -s '[:blank:]' ' ' | cut -d ' ' -f "$@"; }
Run Code Online (Sandbox Code Playgroud)

这用于tr将所有空白序列压缩到单个空间,然后cut提取您感兴趣的字段.

ls -l | columns 1,5,9-
Run Code Online (Sandbox Code Playgroud)

注意,你不应该解析ls的输出.