相关疑难解决方法(0)

如何根据条件将变量传递给 awk 命令?

我有一个 while 循环,它从具有城市名称的文件中读取数据:

城市名称:

COIMBATORE
MADURAI
PONDICHERRY
SALEM
TRIPUR
TIRUCHI
TIRUNELVELI
TUTUCORIN
VELLORE
Run Code Online (Sandbox Code Playgroud)

awkwhile循环中使用命令并尝试在awk语句中再次读取 while 循环体中定义的变量,但是,这不起作用并给我错误。我知道awk需要为其主体单独定义变量,以便awk了解变量用法并可以读取其值。

我的 while 循环如下所示:

while read city
do
        awk -F, '{
                        if ( $1 == "ACTIVE" ) &&
                        ( $2 == "$city" )
                        print $1
                }' siteDBName >> count

        SUM=`awk '{ sum += $1 } END { print sum }' count`

done < city_name
Run Code Online (Sandbox Code Playgroud)

其中 siteDBName 文件包含多列数据,如下所示:

站点数据库名称:

ACTIVE,COIMBATORE,MGT500,1,5,7....
INACTIVE,MADURAI,GT500,5,6,7...
ACTIVE,SALEM,TR600,6,4,6...
ACTIVE,COIMBATORE,GT500,4,5,6...
..
..
Run Code Online (Sandbox Code Playgroud)

在这里,我尝试使用 …

awk shell-script

4
推荐指数
1
解决办法
4万
查看次数

环境变量未在命令行参数内展开

我有一个文件user-pid.out2,其中包含“usernumber”和“process id”作为两列。根据用户编号我想找到相应的进程ID。下面的前两行没有正确显示输出,但是当我在第 3 行和第 4 行中将用户硬编码为 62 时,它显示了与用户 62 对应的进程 ID。有人可以帮忙吗?

USR=62
usrpid=`awk '$1 == "$USR" {print $2}' /home/hu/batchhu/dbscripts_tst2/user-pid.out2`
echo "first:" $USR $usrpid
# This shows 62 and blank for process id

usrpid=`awk '$1 == "62" {print $2}' /home/hu/batchhu/dbscripts_tst2/user-pid.out2`
echo  "second:" $USR $usrpid
# This shows 62 and process id corresponding to this user in the file user-pid.out2
Run Code Online (Sandbox Code Playgroud)

shell bash awk quoting variable-substitution

2
推荐指数
1
解决办法
3062
查看次数

标签 统计

awk ×2

bash ×1

quoting ×1

shell ×1

shell-script ×1

variable-substitution ×1