如何在BASH中使用命令行参数在`awk -F @'{print $ 1}`中设置列号?

时间:2018-08-12 17:19:52

标签: bash awk

我有一个文件script.sh,如下所示:

#!/bin/bash

awk -F@ '{ print $1 } file.csv

这将打印file.csv的第1列。

我希望能够使用诸如script.sh之类的参数运行./script.sh 3,这意味着它将代替打印列3。或者./script.sh 10,这意味着它将代替打印列。 10。

如何以这种方式向AWK传递命令行参数?

2 个答案:

答案 0 :(得分:2)

您可以尝试:

awk -v i=$1 -F@ '{print $i}' file.csv

答案 1 :(得分:1)

请您尝试以下操作。(在脚本中也增加了用法,以防用户未通过它,用户应该收到消息)

cat script.sh
#!/bin/bash
val="$1"
if [[ -n "$val" ]]
then
    awk -v value="$val" -F'@' '{print $value}' file.csv
else
    echo "Usage: Please pass an argument to print a specific field of line while running script as ./script.sh 1"
fi