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

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

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

Embulkは、CSVデータやアクセスログなどの構造化データを高い信頼性で転送することができる、プラグインベースのバルクデータローダーです。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Q&A

解決済

1回答

1690閲覧

embulk or linuxコマンド or シェルでcsvに行番号と日付を追記したい

koba58840527

総合スコア9

Embulk

Embulkは、CSVデータやアクセスログなどの構造化データを高い信頼性で転送することができる、プラグインベースのバルクデータローダーです。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

0グッド

0クリップ

投稿2018/07/28 08:05

編集2018/07/28 12:19

前提・実現したいこと

csvの3列目に行番号と日付を追記したいです。

embulkで取り込んだ(inした)csvに対し、DBにインサート(out)する時に追記できるのが理想なのですが、
調べた限り良いpluginも見つからず、難しそうな気がしています。
linuxのコマンドか、シェルスクリプトでも構いませんのでいい方法をご存知でしたら教えてください。
具体的には以下のようにしたいです。

整形前.csv

2858,山田太郎,3459,発送済み,レコード 6587,斎藤孝雄,7652,発送中,ボール 879,加藤あかり,35,発送済み,コップ 6812,木村淳,680,発送待ち,スマホ 18477,山下幸雄,2566,キャンセル,マウス

整形後.csv

2858,山田太郎,3459_120180728,発送済み,レコード 6587,斎藤孝雄,7652_220180728,発送中,ボール 879,加藤あかり,35_320180728,発送済み,コップ 6812,木村淳,680_420180728,発送待ち,スマホ 18477,山下幸雄,2566_520180728,キャンセル,マウス

よろしくお願いします。

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

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

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

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

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

KojiDoi

2018/07/28 10:26

整形前の2行目はこれで正しいのですか? また、整形後に行番号らしきものは見当たらないようですが、要らないのですか?
koba58840527

2018/07/28 12:20

正しくないので修正しました。行番号は3列目の「_」の隣です。他の方の方の回答を元に解決したので大丈夫そうです。ありがとうございました!
guest

回答1

0

ベストアンサー

データの中にはカンマが含まれない前提です。

Bash

1awk 'BEGIN{FS=OFS=",";day=strftime("%Y%m%d")} 2{for(i=NF;i>=3;i--){$(i+1)=$i};$3=NR day;print}' file >outfile

投稿2018/07/28 10:50

otn

総合スコア84498

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

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

koba58840527

2018/07/28 12:23 編集

今回は「3列目に追加」ではなく、「3列目に追記」だったので、以下のようにさせていただいて無事解決しました。 awk 'BEGIN{FS=OFS=","} {$3 = $3 NR strftime("%Y%m%d"); print;}' import.csv > export.csv aws、大変勉強になりました!ありがとうございました!
otn

2018/07/28 12:25

ああ、データはコピペにミスがあるようなので、あまりちゃんとみていませんでした。 $3=$3 "_" NR strftime("%Y%m%d") ですかね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問