i have log file like :
1::
10::
127.0.0.1
172.17.1.1i want awk to split string to columns on :: delimiter. some thing like :
awk {print$1}and the result :
1and
awk {print$2}and the result :
10and
awk {print$3}and the result :
127.0.0.1
172.17.1.1i don't know how split with awk with delimiter ::.
51 Answer
You can set field-separator using -F option. Use the following commands in terminal,
$ 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.1NR variable stores the line number. For example consider your file, with :: as
field-separator
$1 $2 $3
NR=1 1
NR=2 10
NR=3 127.0.0.1
NR=4 172.17.1.1
and so on.If you use . as field-separator it will be like,
$1 $2 $3 $4
NR=1 1::
NR=2 10::
NR=3 127 0 0 1
NR=4 172 17 1 1 0