数十万行 × 70列のデータから必要な5列を残して、65列を削除したいです。

列の区切りは~(チルダ)、必要な列は70列のうちとびとびの5列です。

google spreadsheetは上限200万セルなので、28,000行づつしかインポートできませんでした。
Windowsの有料アプリは見つけましたが、Windows環境がないのでMacでやりたいです。
SEDとかVIM等のコマンドでできるんでしょうか?

回答の条件
  • 1人3回まで
  • 登録:
  • 終了:2018/08/18 16:12:34
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。
id:kimidorikinoko

何を使ってこのコマンドでできるという具体的な回答をもらえたら助かります。

ベストアンサー

id:a-kuma3 No.1

回答回数4973ベストアンサー獲得回数2154

ポイント100pt

awk でできます。
データのファイル名が data.txt で、そこから 1, 10, 12, 25, 32 列だけを抜き出す場合。

#! /usr/bin/sh

cat data.txt | awk '
BEGIN {
    FS = "~"
    OFS = "~"
}
{
    print $1,$10,$12,$25,$32
}
'
他1件のコメントを見る
id:a-kuma3

各行の32列目がデータなしの場合、その行を削除するという処理をawkで実行する場合どういうコマンドになるのでしょうか?

こんな感じで行けると思います。

#! /usr/bin/sh

cat data.txt | awk '
BEGIN {
    FS = "~"
    OFS = "~"
}
$32 == "" {
    next
}
{
    print $1,$10,$12,$25,$32
}
'
2018/08/18 15:39:15
id:kimidorikinoko

ありがとうございました!助かりました。
今後awk勉強します。(わからずにまた質問するかもしれません)

2018/08/18 16:12:09

その他の回答0件)

id:a-kuma3 No.1

回答回数4973ベストアンサー獲得回数2154ここでベストアンサー

ポイント100pt

awk でできます。
データのファイル名が data.txt で、そこから 1, 10, 12, 25, 32 列だけを抜き出す場合。

#! /usr/bin/sh

cat data.txt | awk '
BEGIN {
    FS = "~"
    OFS = "~"
}
{
    print $1,$10,$12,$25,$32
}
'
他1件のコメントを見る
id:a-kuma3

各行の32列目がデータなしの場合、その行を削除するという処理をawkで実行する場合どういうコマンドになるのでしょうか?

こんな感じで行けると思います。

#! /usr/bin/sh

cat data.txt | awk '
BEGIN {
    FS = "~"
    OFS = "~"
}
$32 == "" {
    next
}
{
    print $1,$10,$12,$25,$32
}
'
2018/08/18 15:39:15
id:kimidorikinoko

ありがとうございました!助かりました。
今後awk勉強します。(わからずにまた質問するかもしれません)

2018/08/18 16:12:09

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません