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

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

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

回答の条件
  • 1人3回まで
  • 13歳以上
  • 登録:2018/08/18 10:02:17
  • 終了:2018/08/18 16:12:34
id:kimidorikinoko

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

ベストアンサー

id:a-kuma3 No.1

a-kuma3回答回数4737ベストアンサー獲得回数20302018/08/18 13:45:37

ポイント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

a-kuma3回答回数4737ベストアンサー獲得回数20302018/08/18 13:45:37ここでベストアンサー

ポイント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

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

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

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません