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

Mor*_*yan 2 log awk

我有日志文件,如:

1::
10::
127.0.0.1
172.17.1.1
Run Code Online (Sandbox Code Playgroud)

我希望 awk 将字符串拆分为 :: 分隔符上的列。就像是 :

awk {print$1}
Run Code Online (Sandbox Code Playgroud)

结果:

1
Run Code Online (Sandbox Code Playgroud)

awk {print$2}
Run Code Online (Sandbox Code Playgroud)

结果:

10
Run Code Online (Sandbox Code Playgroud)

awk {print$3}
Run Code Online (Sandbox Code Playgroud)

结果:

127.0.0.1
172.17.1.1
Run Code Online (Sandbox Code Playgroud)

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

sou*_* c. 10

您可以使用-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
Run Code Online (Sandbox Code Playgroud)

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.
Run Code Online (Sandbox Code Playgroud)

如果您.用作字段分隔符,它将像,

        $1          $2        $3     $4
NR=1    1::
NR=2    10::
NR=3    127         0          0      1
NR=4    172         17         1      1
Run Code Online (Sandbox Code Playgroud)