質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
UNIX

UNIXとは、AT&Tのベル研究所で開発されたコンピューター用のマルチユーザー・マルチタスクのオペレーションシステム(OS)です。政府や教育機関や研究所で広範囲に採用されています。

AWK

AWKは、UNIX 上で開発されたプログラミング言語で、CSVファイルなどのテキストファイルの処理を目的にデザインされています。

Q&A

解決済

2回答

439閲覧

テキストデータの列を動的抽出する方法

imrugik

総合スコア14

UNIX

UNIXとは、AT&Tのベル研究所で開発されたコンピューター用のマルチユーザー・マルチタスクのオペレーションシステム(OS)です。政府や教育機関や研究所で広範囲に採用されています。

AWK

AWKは、UNIX 上で開発されたプログラミング言語で、CSVファイルなどのテキストファイルの処理を目的にデザインされています。

0グッド

0クリップ

投稿2019/05/17 06:29

テキストデータ内にカラム名とデータが入っております。
そのテキストデータの指定したカラム名が入っている列のデータをコマンド抽出したいのですが、方法はありますでしょうか?

なお、awkのバージョンは4.0.2です。

【イメージ】
cat テキストデータ | awk '{print $4, $6}'
↑コレを$4や$6指定でなく、'Target'と'Data1'で指定するように変更(?)

【例】
・テキストデータ
Col1 Col2 Col3 Target Col4 Data1 Col5 ...
Data1 Data2 Data3 Data4 Data5 Data6 Data7 ...
Data11 Data22 Data33 Data44 Data55 Data66 Data77 ...

・抽出内容
Target Data1
Data4 Data6
Data44 Data66

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KojiDoi

2019/05/17 07:07

既に出来ているように見えるのですが、何が納得できないのでしょうか?
imrugik

2019/05/19 11:58

上記の記載ですとカラム場所を数値指定しなければならないのですが、 編集するファイルが多く、カラムの順も違うため、カラム名にて指定を行いたい。 という要望がクリアできていないと思っております。
guest

回答2

0

ベストアンサー

こんな感じですかね。

awk

1#/usr/bin/awk -f 2# awk -f this.awk cols='Target Data1' input.txt 3 4NR==1{ 5 target_num = split(cols, targetcolnames, " ") 6 k=1 7 for(i=0; i<=NF; i++){ 8 for(j=1; j<=target_num; j++){ 9 if($i==targetcolnames[j]){ 10 targetcols[k] = i 11 k++ 12 } 13 } 14 } 15} 16 17{ 18 out = "" 19 for(i=1; i<=target_num; i++){ 20 out = out " " $targetcols[i] 21 } 22 sub(/^ /, "", out) 23 print out 24} 25

投稿2019/05/19 13:47

KojiDoi

総合スコア13669

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

外部のモジュールをインストールしてよいのなら q というものもありますよ。
http://harelba.github.io/q/ja/

投稿2019/05/17 06:58

mather

総合スコア6753

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

imrugik

2019/05/19 11:55

確かにインストール可ならその方法もあったのですが、 今回はインストール不可でお願いしたいです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問