awkで文字列を使用して列番号を決定する

awkで文字列を使用して列番号を決定する

次のようにパイプで区切られたファイルがあるとします。

|Sr|Fruits|Colors|
|1 |apple |red|
|2 |orange |orange
|3 |grapes |purple|

ここでは明らかに「果物」と「色」の列が使用awkされます。 $2$3

後で列の順序が変更された場合は、文字列を使用して列番号を確認できますか?

つまり$3であり果物はい$2

ベストアンサー1

少し気まずい感じですが、常に次のコード行を使用して列番号を見つけます。

head -1 file | sed 's/delimiter/\n/g' | nl
ここでは、ファイルのヘッダー行を取得し、パイプを介してsed\ n区切り文字に置き換えます。その結果、各列ヘッダーが新しい行に表示されます。最後に、nl元の列番号に対応する行番号にパイプします。

おすすめ記事