Frage

Suppose I have a text file with 6 columns as below

a|b|c|d|e|f

I know that somwhere in the file the character 'd' exist, but I want to know the column no for it

I have used the following command

awk 's=index($0,"d"){print "position="s}' filename

but it counts the delimiters too which I dont want....I want the output to be 4 in case of "d"

War es hilfreich?

Lösung

define "|" as Record Seperator, and use NR variable in awk:

awk -v RS="|" '/^d$/{print NR;}' filename

change ^d$ to whatever you want to match.

Andere Tipps

Using awk you can do:

awk -v val='d' -F '|' '{for (i=1; i<=NF; i++) if ($i==val) {print i} }' file
4
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top