Splitting a string into exactly two parts in awk -
in awk (gnu awk 4.1.3 on ubuntu 16.04) , best way split string 2 substrings @ first occurrence of separator character (here :), leaving second half is, if contains more separators?
what have looks (simplified) (linebreaks added visibility):
awk '/^[^=]+:/ { split($0, a, ":") ; system("echo part 1: "a[1]) ; print "part 2: "a[2] ; }' i need call external application first part argument (using echo here example) , print second part is, without first colon separates part 1 , 2, otherwise untouched.
the problem here input lines contain more 1 colon, resulting in getting split array more 2 elements. approach above, ignore after second colon.
just use 3rd argument match():
$ echo 'one:two:three:four' | awk ' match($0,/([^:]+):(.*)/,a) { system("echo part 1: "a[1]) print "part 2: "a[2] }' part 1: 1 part 2: two:three:four
Comments
Post a Comment