i have log file like :
1:: 10:: 127.0.0.1 172.17.1.1 i want awk to split string to columns on :: delimiter. some thing like :
awk {print$1} and the result :
1 and
awk {print$2} and the result :
10 and
awk {print$3} and the result :
127.0.0.1 172.17.1.1 i 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.1 NR 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