デスクトップでLinuxが普及する訳ないと思った時 11
■ このスレッドは過去ログ倉庫に格納されています
壊れていないとすれば "c,,こうか,"c,か,,"cこうじゃないのか。 >>636 に通した結果ですけど A,a B,b ,"c ,c C,c" cat data.csv | awk -F ',' -v 'OFS=,' '{print $3,$2,$1}' でこうなりました。 1,A,a "2,B,b ,,"c ,,c 3 ,C,c" CSVは複雑な形式だから、awkなんかで処理しようと死ぬ >>645 そうだね。全ての項目の後ろに@でもつけて以下のようにしてみて。 a@,A@,1@ b@,B@,"2,000@" "c c c@",C@,3@ 三列のcsvなのに四列目の000"が存在しているのが間違いだな。 7. フィールドがダブルクォーテーションで囲まれている場合、フィールドの値に含まれるダブルクォーテーションは、 その直前にひとつダブルクォーテーションを付加して、エスケープしなければならない。 よく知らないけどこの辺ですか? ただのウサギなんですが、0埋め もしくは、-埋めではダメなんですか? sed -n "/[^,]*,[^,]*,[^,]*,[^,]*/p" とか…。 awkも結局シェルのプロセス外のシーケンサーの一種だけどな で、デスクトップと何の関係が? 256文字すべてを含むフィールドが存在できる以上 セパレータ文字をエスケープする文字の存在は不可能? "エスケープ文字" "セパレータ文字" の並びがデータだと言われたらダメだな。 長く複雑なセパレータ文字列を使えば確率は下がるかもしれない。 デスクトップとして普及しないのはスレタイと関係ない事を延々とレスする基地外が跋扈する世界だからさ。 よくわからないけどこんなものが出来ました。 cat data.csv | sed 's%.*,"\([^",]*,[^",]*\)".*%"\1"%g' | grep '"[^"]*"' 長く複雑なセパレータ文字列案 "いやがらせすんな" >>651 三行目と四行目はいらないのかね? 全ての項目にはならないけど? 設問の不備ですかねぇ、出題者様ぁ。 まぁ、>>638 をデータとしてそのまま使うのはあまりおすすめしませんねぇ。 修正してから加工したほうがよろしいんじゃないですか、お客さん。 教育関係者かね? 既知の問題だと思うけど、そいつらの相手はただの知恵比べでつまらんよ。 教室のテストじゃないからググるというカンニングでてきそう。 まぁ、>>638 の時点でどうしてほしいか書いてない時点で間抜け確定なんだよ。 そんなやつの相手をしても無駄といえば無駄だったな。 教育関係者のアホなところはなんとしてでも生徒より上に立とうとすることだろうな。 そんな無駄な努力をするより未知の問題に立ち向かう姿勢を見せた方が生徒に慕われると思うよ。 俺もcsvはほとんど知らなかったからなぁ、 いい勉強にはなったかもしれんが csvを使って何かするということはこの先ほとんど無いだろうな。 アホな教育者のマウントに付き合わされるだけか…。 σ < 教師は、制度上、未熟だから学びに来ている生徒に囲まれている (V) 1学科に特化して毎日対峙しているのだから || 新しく学ぶことでは、当然、未熟な生徒など簡単に捻れる だから、増長しやすい それなのに上に立とうとうろたえる程度だったら そりゃ悲惨な現実が展開することになるな、ワワワワワ 無駄な努力で無駄な知識を得させる、 我が国のリソースを食いつぶすのはやめてくれ。 σ < 用途に最適化したフィルターを用意し (V) 用途に合うセパレーターを採用すればよい || しかし、エスケープシーケンスは必要になってくるだろう フィルターを記述するのはお好みの言語でどうぞ Linuxは良い練習台になります comma-separated values のファイルに「最適なセパレータは?」とか言われてもな。 σ < ワロタ (V) 目的に合うデーター形式のテキストを選べばよいだけ || >>673 なに一人で空回りしてんのさw なにかしてほしいんじゃねーよ。 CSVなんて簡単なんて抜かしてるから、CSVを編集するなら 専用のツールを使わないとだめってことを指摘しただけだ。 世の中のCSVなんて、エクセルからの出力ばかりなんだから シェルスクリプトやawkで簡単だぜーとか言ってると痛い目を見るぞ。 >>678 >>638 は真っ当な CSV 形式で、セパレータは , です。 , や改行を含めた場合、"" で囲まれます。改行も1つのデータなので削ってはいけません。 ところがPowerShellはcsv如き外のプロセスに頼らずに処理できる、と あー、コマンドレットとかそんな話じゃないからな https://www.aruse.net/entry/2018/09/08/162030 あんなもんすぐ限界が来るから直接TextFieldParserの類を使った方がいい そもそもcsv如きPowerShellなら自前のパーサで処理したとこで大した負担にもならんだろうが StreamReader辺りで1行づつ読んで"の囲いとエスケープを処理しながら"の範囲外の,で分割して テーブルで返す、なんてその辺に無駄に転がりまくってて自前で書いても何の自慢にもならん >>682 設問の不備は? 以下のようにしてみてって書いてるやろ。 まぁ、お前の部下でも生徒でもないんで義務はないけどな。 改行を含めるとかセパレート文字使うとかアホとしか思えんよ。 で、それに真面目に対応するMSはすごいけど 間抜けなデータの処理自慢するとか…。 これがおいらの正体ですwww 得意技は荒らしです σ < おいら荒らしですwww ほんとテーノーですwwwww (V) || http://warotateno.web.fc2.com/warotawarota.html >>688 2枚目の上の方にあるアイコンってなに? 理論上使えるけどほんとにそれ使ってそれは便利なの? ってもん実際に使ってるの? データを扱うファイル形式としての性格上改行文字含めるとか…。 もしエスケープ使ってでも使ってしまっている場合やはり出来うる限り修正すべきだろう。 長い注釈とか想定してるのかね? >>620 Bashでしかできないシェルスクリプトまだなの? 能無しのクズ bashでしか出来ないスクリプトってshebangを/bin/bashから/bin/shに変更すると動かなくスクリプトでいいの? bashで拡張された構文で書けばいいと思うけど。 >>699 csvで改行付き文字列ってだけで使うでしょ。 cat data.csv | tr "\n" "#" | sed -e 's%,%@,%g' -e 's%#%@#%g' -e 's%"@%@"%g' -e 's%\([^"]"[^"]*\)@,\(.*\)%\1,\2%g' | tr "#" "\n" | sed '/,/! s%@%%' 条件は一応クリアだけどねぇ…。 #!/bin/bash str='hogefuga' if [[ $str =~ fuga ]] ; then echo 'attayo' fi とか/bin/shとかだと動かんと思うけど。 >>702 > bashでしか出来ないスクリプトってshebangを/bin/bashから/bin/shに変更すると動かなくスクリプトでいいの? 普通に考えれば、bash以外だと出来ない or 困難だけど、 bashなら簡単にできるって意味だろw あれってシバンって言うの? 昔は意味も知らず馬鹿正直に#!/bin/shとか書いてたけどね。 最近面倒だからなにも書かない。 σ < >>698 アプリケーションウィンドウ常駐するランチャーシステムです (V) フォーカスがアプリケーションウィンドウ上にない場合は || デスクトップの指定の位置に移動する >>706 よくわからんがdata.csvの中に#や@は含まれない条件って事? >>716 そう 汎用性はない。 @は挿入する文字だから。 #は入れ替えれば動くと思うが 複数の,とか\nと,が""内に同居してるとまずいと思う。 テストはまだしてません。 >>718 マジ? σ < #!/bin/sh (V) Linux Mint 64bit版では無しで動いた || MX Linux 64bit版では、無しでは動かなかった 最近の検証結果 a,A,1 "b",B,"2,000,000" "c ,c c",C,3 ボロボロやなぁ…。 自作のツールでログ吐かせるとか、特定用途のデータファイルにCSV形式つかうことはあるけど、LibreなりOfficeなりでExcelの2003形式が基本だな、俺は。 CSVのままだとちゃんと理解してくれないアプリが多すぎる。 いろいろあったんだけど、決定打になったのがOutlookのアドレス帳をCSV形式でエクスポートして、別のPCの同じバージョンのOutlookで読んだら改行ありのデータがきちんとインポートできなかった時。 鬱憤というか、それまで積もってきた不満があふれて「こりゃだめだ」って見捨てたw Windowsは、もうじき無くなるから準備しといた 方が良いよ。もうそんなに、時間のこってないよ。 >>682 騒ぐほどのこと? Awk でちょいちょいじゃん シェルスクリプトとかawkのコードの移植性を あまり考えなくなったなあ。これじゃいかんのだが だって、他の処理系、開発止まっちゃってるんだもん わざわざ、便利な機能を使わない意味がもはや 見当たらないよ。 ところで、デスクトップ どこ行ったんだろ? まあ、別に普通に使えるけど >>689 vifm,mcの方が良いよ 見た目が良いよ こりゃ古すぎ >>724 ログに毛の生えたようなものだと思っていたんだよ。 >>723 とっくにoutlook.com経由でAndroid端末に全部移行できてるから問題ないよ。 googleとoutlookと携帯キャリアの3か所にアドレス帳のバックアップがある状態。 ところで、Windowsが終わるとか、Linuxが流行るとか、20年ぐらい前からずーっと言われてるような気がするのは気のせいか? 改行を含むものは出来ないっぽいな。 まぁ改行を含むcsvファイルがどれだけの割合で存在するかだなぁ、 でも未対応と言われればやはり使いづらくなるな。 そういった細かいことにこだわっていても前には進めんということか…。 デスクトップLinuxとかけまして 横浜駅と解きます。 その心は >>723 > Windowsは、もうじき無くなるから準備しといた > 方が良いよ。 だな。1000年後の未来に行って子孫に Windowsはもうじき無くなるぞーって言ってくるわ。 お前らは何にもわかっちゃらない! 少しはデニス・M・リッチーを見倣え! "2,000",bbb,"3,000,000",aaa cat data.csv | sed 's%"%\n%g' | sed '/^$/d' | sed 's%^,%%' | sed 's%,$%%' | sed 's/$/@/' | sed '/,/ s/^/"/' | sed '/,/ s/$/"/' | tr "\n" "," | sed s'%,$%\n%' 一行だけなんだけどささやかな抵抗をしてみました。 他人がレビュー(書くよりも短い時間で問題ないと判断できること)出来ないコードを書くな デスクトップと何の関係も無いし そもそもPowerShellなら可読性の高いコードをスクリプトに埋め込んでスクリプトだけで完結するし Ruby では、改行コードなどの特殊文字も、"〜" 内に書けば、エラーにならない require 'csv' str = <<"EOT" id,first name 1,abc 2,"xy\nz" EOT options = { :headers => true } CSV.parse( str, options ).each do | row | p [ row[ 'id' ], row[ 'first name' ] ] end 出力 ["1", "abc"] ["2", "xy\nz"] rubyのソースだけで云々ってんならもはやWinもLinuxもデスクトップも関係ねえw ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる