使用 awk 和分隔符分割字符串

使用 awk 和分隔符分割字符串

我有如下日志文件:

1::
10::
127.0.0.1
172.17.1.1

我希望 awk 根据 :: 分隔符将字符串拆分为列。例如:

awk {print$1}

结果:

1

awk {print$2}

结果:

10

awk {print$3}

结果:

127.0.0.1
172.17.1.1

我不知道如何使用带分隔符 :: 的 awk 进行拆分。

答案1

您可以使用选项设置字段分隔符-F。在终端中使用以下命令,

$ awk -F "::" 'NR==1 {print $1}' logfile.txt 
1
$ awk -F "::" 'NR==2 {print $1}' logfile.txt 
10
$ awk -F "::" 'NR!=1 && NR!=2 {print $1}' logfile.txt
127.0.0.1
172.17.1.1

NR变量存储行号。例如,考虑你的文件,使用::作为字段分隔符

        $1          $2        $3
NR=1    1
NR=2    10
NR=3    127.0.0.1
NR=4    172.17.1.1

and so on.

如果你使用它.作为字段分隔符,它将像,

        $1          $2        $3     $4
NR=1    1::
NR=2    10::
NR=3    127         0          0      1
NR=4    172         17         1      1

相关内容