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

Linux 如何在shell脚本中将几个shell变量传递给awk?,linux,shell,awk,Linux,Shell,Awk,我已经编写了一个shell脚本来获取任何列。 剧本是: #!/bin/sh awk '{print $c}' c=${1:-1} 这样我就可以称之为 ls -l | column 2 但是如何为多个列实现它呢? 比如说,我想要这样的东西: ls -l | column 2 3 现在,您只需在shell脚本中更改r变量并将其传递。 或者您可以在shell脚本中配置它,并使用r=$your\u list\u var awk命令将打印$your_list_var中出现的字段编号。 上面的示例打印

我已经编写了一个shell脚本来获取任何列。 剧本是:

#!/bin/sh
awk '{print $c}' c=${1:-1}
这样我就可以称之为

ls -l | column 2
但是如何为多个列实现它呢? 比如说,我想要这样的东西:

ls -l | column 2 3
现在,您只需在shell脚本中更改
r
变量并将其传递。 或者您可以在shell脚本中配置它,并使用
r=$your\u list\u var

awk命令将打印
$your_list_var
中出现的字段编号。 上面的示例打印
ls-l
输出的第3和第5个字段

现在,您只需在shell脚本中更改
r
变量并将其传递。 或者您可以在shell脚本中配置它,并使用
r=$your\u list\u var

awk命令将打印
$your_list_var
中出现的字段编号。
上面的示例打印了
ls-l
输出的第3和第5个字段。

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

columns() { tr -s '[:blank:]' ' ' | cut -d ' ' -f "$@"; }
这使用
tr
将所有空格序列压缩到一个空格中,然后
cut
提取您感兴趣的字段

ls -l | columns 1,5,9-

注意,您。

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

columns() { tr -s '[:blank:]' ' ' | cut -d ' ' -f "$@"; }
这使用
tr
将所有空格序列压缩到一个空格中,然后
cut
提取您感兴趣的字段

ls -l | columns 1,5,9-
注意,你

使用您喜欢的任何非数字作为列号分隔符(例如逗号或空格)


使用您喜欢的任何非数字作为列号分隔符(例如逗号或空格)。

+1,但将
拆分
放在
开始
块中,这样您就不必对每一行都执行此操作。当输入文件包含printf格式字符且不必按输入顺序输出字段时,将以加密方式失败,也不是按照论点的顺序。它还将在每一行的末尾添加一个空格,并在每一输出行之间添加一个伪换行符。+1,但将
split
放在
BEGIN
块中,这样就不必对每一行都执行此操作。当输入文件包含printf格式字符且不一定在输入顺序中输出字段时,将以加密方式失败,也不是按照论点的顺序。它还将在每一行的末尾添加一个空格,并在每一输出行之间添加一个伪换行符。+1表示正确的解决方案。我可能会使用
tr-s'[:blank:]['\t'
,这样您就不需要在cut args中指定
-d'
,而是使用nbd.+1作为正确的解决方案。我可能会使用
tr-s'[:blank:]['\t'
,这样您就不需要在cut args中指定
-d'
,而是在nbd中指定。