名前に「慢性」という単語を含むCSVファイルから列を抽出する方法

名前に「慢性」という単語を含むCSVファイルから列を抽出する方法

大きなcsvファイル(約1000列)があり、ヘッダー名に「慢性」という単語を含む列だけを新しいファイルに抽出したいと思います。どうすればいいですか?

たとえば、次のような場合があります。

gender,chronic_disease1,chronic_disease2
male,2008,2009

希望の出力は次のとおりです。

chronic_disease1,chronic_disease2
2008,2009

注:列/フィールドの区切り文字はカンマ「、」です。一致するものがない場合、chronic出力はまったくありません。

ベストアンサー1

使用ミラー(Ubuntuの「ユニバース」リポジトリで利用可能です)対応する動詞cutは、オプションで正規表現を使用してフィールド名を一致させることができます。

mlr --csv cut -r -f 'chronic' file.csv

chronic(フィールド名の部分文字列と一致)またはより具体的に

mlr --csv cut -r -f '^chronic_' file.csv

(サブストリングを名前の先頭に固定し、後ろにアンダースコアを付けます)

mlr --csv cut -r -f '"^chronic_"i' file.csv

後者を大文字と小文字を区別せずに一致させます。

一致を元に戻すには、すべての列を選択してください。いいえ一致^chronic_、追加-x

mlr --csv cut -x -r -f '"^chronic_"i' file.csv

--csvlite注:入力ファイルに高度なCSV機能(RFC-4180スタイルの二重引用符など)が含まれていない場合は、より効率的なエンジンを使用できます。バラよりファイル形式 - CSV/TSV/ASV/USV/など。

文字列を含むフィールド名がなく、空のchronicレコードの代わりに出力がまったく必要ない場合は、skip-trivial-records抽出したデータをMillerのサブコマンドで渡します。

mlr --csv cut -r -f 'chronic' then skip-trivial-records file.csv

おすすめ記事