[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 06/25 22:56 / Filesize : 258 KB / Number-of Response : 1042
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

シェルスクリプト総合 その27



1 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/05/03(木) 17:54:23.25 .net]
シェルスクリプトの総合スレです。
□お約束
・特記なき場合はBourne Shell(/bin/sh)もしくはPOSIX準拠の互換シェルがデフォルトです。
 bash/zsh/ksh/ash/dash/yash/poshなどの専用機能に依存する場合は明示しましょう。
 Linuxユーザは/bin/shの正体がbashまたはdashなので特に注意。
 FreeBSDユーザは/bin/shの正体がashなので注意。
・POSIXについてのリンクは https://en.wikipedia.org/wiki/POSIX にまとめられています
 最新の仕様はこちらへ pubs.opengroup.org/onlinepubs/9699919799/
 (左上の「Shell & Utilities」 から参照することができます。)
・v7 shに一番近くて、現役(?)のshは、OpenSolaris由来のheirloom sh。
  src.illumos.org/source/xref/illumos-gate/usr/src/cmd/sh/
  heirloom.sourceforge.net/sh.html
・csh/tcshのシェルスクリプトは推奨されません。
 (理由は「csh-whynot」でググれ)
・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。
 manや参考リンクを見ましょう。
 aproposないしはman -kでそれらしい単語による簡単な検索もできます。
・シェルで使えるワイルドカード等は正規表現ではありません。
 正規表現の話題はスレ違い(正規表現スレへ)
・シェルスクリプトのことをシェルってゆうな
□初心者へのアドバイス:
・適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも
 awkまたはperlの方が適した処理にはそちらを使いましょう。
・知らないコマンドが出てきたらmanを引きましょう。
・思い通りに動かないときは、まずは sh -x でトレースしましょう。
□回答者への注意事項:
・シェルスクリプトでの処理方法を質問しているのに、よくわからずに
 「そういうのはperl使いましょう」と回答するのはやめましょう。
 安易にperlに逃げずにシェルスクリプトで処理するのが頭のいいやり方。
 質問に対して問題が間違ってるといちゃもんをつけるのもやめましょう
前スレ シェルスクリプト総合 その26
https://mevius.5ch.net/test/read.cgi/unix/1489979246/

331 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 00:30:51.68 .net]
>>318
そういうものはシェルスクリプトでは扱わない
適材適所

バカは同じものをなんにでも押し付けようとするから無駄に機能が肥大化する

332 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 01:40:53.84 .net]
シェルスクリプトだって適切に扱える(場合はある)
例えば1データがファイル単位に分かれてるとか1データの処理が1プロセスの寿命と同じでいいとか

333 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 02:20:54.22 .net]
U+001EやU+001Fを区切り文字として利用してる方いらっしゃいますか?
結構便利(絶対に他の文字と衝突しない)だと思うんですが、そういうシェルスクリプトを見たことがありません。

334 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 02:29:16.89 .net]
はっはっは。一データの中に改行が含まれてる
ものすら扱えないここの連中にそんな発想ができるやつはいない
その程度の陳腐なアイデアであったとしてもな

335 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 02:38:52.56 .net]
ここだけのシェルスクリプトだけを言っているわけではないと思うけど

336 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 08:14:53.42 .net]
>>323
正直、そういう解答を出してほしかったね。だせるかなーって思っていたけど
シェルスクリプトでそういうデータを扱うなんておかしいとかのたまうばかり
\x1c(ファイル分離)、\x1d(グループ分離)、\x1e(レコード分離)、\x1f(ユニット分離)は
まさにそういう用途で使うもの。ここの連中の技術力の低下を感じる。

337 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 09:06:40.68 .net]
見たことがないって言ってんのに、
このスレ住人の話に限定してどうすんだ

338 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 09:26:13.67 .net]
いや>289で答えとるやん
>318ってようは>282の質問し直しでしょ

339 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 11:02:49.39 .net]
>>327
住民に限定し、しかも馬鹿にしたい欲求を生んだ過去があったのだろう。馬鹿にされたとか、単になにか否定されたとか



340 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 12:04:18.14 .net]
>>328
それは

341 名前:改行コードを置換するって話
置換することで遅くなってしまう悪いパターン
置換なんかしません
[]
[ここ壊れてます]

342 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 12:18:36.59 .net]
イミフ

343 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 12:42:33.56 .net]
改行コード含んだデータ扱いたいという前提の質問かと思ったら
改行コード含んだデータなどナンセンスであるという主張だった

344 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 13:18:33.58 .net]
イミフ

データの中に改行コードがあるってだけだろ

345 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 13:18:58.61 .net]
データの中に改行コードがあっても置換する必要はありませんよねぇ

346 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 13:19:57.33 .net]
>>289はデータの中に改行コードがあるのはナンセンスだから置換しろという主張
そんなことをする必要はない

347 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 13:40:18.16 .net]
なんかただ否定している感じにしか見えんけど
シェルスクリプトで扱うまでも考えて否定してんのかな?

348 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 13:41:43.48 .net]
>>289はナンセンス云々でなくて、現実的なだろと思うけど

349 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 14:38:11.53 .net]
>>337
動くかどうかだったら動くけど
速度が遅過ぎで現実的じゃないよ
なにせ一行一行forkとプロセス起動が必要になるしね



350 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 15:07:33.90 .net]
速度が問題になるかは条件次第で
現実的じゃないと言いきれる根拠は今のところ無い

351 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 15:18:07.55 .net]
>>338
> なにせ一行一行forkとプロセス起動が必要になるしね
イミフ

352 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 15:18:34.26 .net]
>>326
だってどうせCSVの話だろ?区切り文字を換える話をすると
後出しじゃんけんでソレは違うって言い出すのが常套手段

353 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 15:46:39.73 .net]
一度全部置換してから読み取ればいいんじゃないですか(名推理

354 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 15:59:54.35 .net]
因みにCSVはRFCで「内部改行はCRLF」と定まっているので
ここから攻めるというのもアリ。
「\r\n」という組はフィールド区切りとしては無効にすればよろし
え? CSV出力すると内部改行がLFになるLibreOffice Calc?
知らない子ですね…

355 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 16:03:53.76 .net]
>>340
まったく
どういう処理を想定しているのか全くみえんな。そのなアホなという処理方法は

356 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 16:07:14.39 .net]
> "Excelから出力したCSVのように" 一行(?)の中に改行が含まれた
> データを扱うにはどうしたら良いでしょうか?

> カンマ区切りのCSVデータだと "仮定して" 、

> 今回はCSVではありませんが、


こう書いてあるのに、CSV形式だって思い込むのは
頭が悪いと思います。

357 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 16:07:56.46 .net]
>>343
> 因みにCSVはRFCで「内部改行はCRLF」と定まっているので

なるほど、\n のようにエスケープしてはいけないんですね

358 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 16:10:01.41 .net]
だったらお前がそのわけわからんCVS形式でない答えを応えれtばええんちゃんですかね?具体的に何も言ってないのに対する汎用的な
自称賢いらしいから時間かけずになんでもござれの汎用的的なのかけるだろ?

359 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 16:10:06.96 .net]
>>345
だったら好きにすれば?



360 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 16:10:50.12 .net]
>>343
> 一度全部置換してから読み取ればいいんじゃないですか(名推理

そして一行ずつ読み取るわけですねw

そりゃそうでしょう。\nを全部改行コードに戻してしてしまったら、
区別できないですからね

361 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 16:11:08.39 .net]
>>345
既にCSVをどうするのかという話題に変わってるんですよ。
空気読んでくださいよ。

362 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 16:11:30.84 .net]
>>346>>345っぽいけど、そうなら他人を頭が悪いとは言えんだろうw

363 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 16:12:08.78 .net]
>>347
> だったらお前がそのわけわからんCVS形式でない答えを応えれtばええんちゃんですかね

データの中に改行コードがあるってだけで、
フォーマットは最初から指定してないよ?

その場合どういうやり方があるでしょうって話なんだが、
CSVだと思いこんで効率の悪い方法しか思いつかず
指摘したら逆ギレするのやめなよ?ダサいから

364 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 16:12:51.65 .net]
>>338
MINIX でも使ってるの?

365 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 16:13:10.06 .net]
>>351
なにが言いたいのかわからんが、RFCのCSVの仕様に改行コードを
エスケープするという仕様はない。ダブルクォートでくくればいいだけ

366 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 16:13:34.23 .net]
>>353
へー、MINIXも遅いんですねー

367 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 16:14:28.24 .net]
えっ、

368 名前:一行づつ fork + exec してるって本気で思い込んでるんだ… []
[ここ壊れてます]

369 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 16:16:58.31 .net]
>>352,354
...はあ...
マジで言ってるの?



370 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 16:22:35.88 .net]
>>356
外部コマンドを呼び出すならそうだね
まさか外部コマンドを呼び出さないで置換できるとでも思ってのかい?w

371 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 16:23:33.86 .net]
データ | フィルタ | シェルスクリプト(関数なり) | フィルタ > データ
フィルタをどう作るかは具体的じゃないとでCVSしか例にあげてないからCVSなだけなんだが
っていういたって普通のことなのに。そうじゃないナニかを想定しているらしけど、そのナニかの具体的なことは全く言わずに指摘wという否定なだけだもんな
その指摘もトンチンカンなこともあり、ただただ無闇に偉ぶりたいだけにしか見えんなあ

372 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 16:24:15.94 .net]
>>357
仕様よんでこい

www.kasai.fm/wiki/rfc4180jp

CSVの仕様においてエスケープとは
ダブルクォート " を "" と二つ連続させるものだ
\記号でエスケープする仕様はない

373 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 16:25:32.32 .net]
>>360
それは最初&最終形態だよ。途中で処理の都合のよいようにするのに仕様もなんもないわっ
マジあほとしか思えない

374 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 16:26:22.60 .net]
もう一つ解説記事

https://codezine.jp/article/detail/2364

>  改行コードはプラットフォームによって異なります。一般的にWindowsは
> <CR><LF>、UNIXは<LF>です。

>  ※2008/04/16追記:RFCでは末尾(レコードの区切りとして)の改行は
> <CR><LF>を推奨しています。CSVを解釈するプログラムではどちらの
> 改行コードでも読めるように作ることをお勧めします

> ダブルクォートで囲む場合
> "山田","太郎","値に
> 改行や,カンマや""ダブルクォートが含まれても問題ありません。"

> まれにCSVの方言で\エスケープを行うことがあります。
>
>\エスケープを行う特殊な例
>"山田","太郎","値に改行\nや\,カンマや\"ダブルクォートが含まれても問題ありません。"
> この方言はあまり普及していませんので、利用するのは避けましょう。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

375 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 16:26:49.29 .net]
>>361
最終形態とか何いってんだ?
RFCの仕様の話をしている

376 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 16:27:48.82 .net]
>>363
シェルスクリプトでどう扱うかだぞ?処理をどうするかだぞ?なに言ってるの?プログラミング知らないの?

377 名前:名無しさん@お腹いっぱい。 [2018/06/10(日) 16:28:23.86 .net]
CSVスレになってんのはなぜなんだ
勉強にはなるけど

378 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 16:28:48.64 .net]
もう一つw
https://www.upken.jp/kb/csv.html

> RFC4180準拠
>  基本
>  ヘッダーはあってもなくてもよい
>  空データフィールドがある
>  前後にスペースがあっても無視しない
>  ダブルクォーテーションで囲む場合は同じレコードのすべてのフィールドをダブルクォーテーションで囲む
>  改行、ダブルクォーテーション、カンマを含むフィールドは、ダブルクォーテーションで囲むべき
>  ダブルクォーテーションで囲まれているフィールドでダブルクォーテーションを使用する場合は、ダブルクォーテーションでエスケープする
>  

379 名前:非常に長い文字列を考慮
>  複合パターン
[]
[ここ壊れてます]



380 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 16:29:45.29 .net]
>>364
> シェルスクリプトでどう扱うかだぞ?

CSVを扱うという話はしてない
\ でエスケープするのは遅くて無駄という話ならしたがね

381 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 16:31:47.04 .net]
>>367
お前はどうかしてる。ここにきてCVSの仕様を得意げにあげてるのと同じヤツってことはないよな?

382 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 16:34:02.42 .net]
>>358
左手でつり革に捕まっていても、左手で痴漢できるそうですよ
日本の裁判所は素晴らしいです

383 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 16:35:15.34 .net]
>>368
どうかしてるって言うなら、答えを書きなよ
なんど言われれば分かるんだ?

384 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 16:36:40.96 .net]
>>368
CSVの仕様を得意げにーっていうのは

> 因みにCSVはRFCで「内部改行はCRLF」と定まっているので
↑こいつのことですかな?w

まあ、RFCでCRLFと決まってないんですがw

385 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 16:36:59.71 .net]
>>370
答えって...だいたい想像できるだろう。めんどくさいだけで
お前のやり方がわからんわ。指摘するお前が出せよw

386 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 16:39:16.71 .net]
>>372
「だいたい」しか「想像」出来てないのに偉そうだなおい
かけないんだろう?だから人にいちゃもんつけるだけなんだろ
いい加減ごめんなさいって言った方がいいぞ?

387 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 16:39:21.31 .net]
1データの中に改行が含まれてる
そのままだとデータ区切りの改行と見分けがつかない
CSV形式の話はしていない

\nにエスケープする方法では、1データずつ処理しなければならず
外部コマンド呼び出しの必要があるから遅い

ここまでは理解できてんのかなー?

388 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 16:39:51.59 .net]
>>371
いや、お前のこと。たぶん
それは単に利用できそうなキーポイントでそれを利用してって話でしかないな
たぶん、お前だろうが、得意げには仕様が絶対でどうであれ利用しちゃダメっていう変なヤツ

389 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 16:40:34.63 .net]
>>375
俺は最初からCSV形式のデータを扱う話なんかしてないんですが?



390 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 16:42:26.75 .net]
>>373
だいたいの普通の人はその処理方法を想像できる「だいたい」だし、想像=書けるってことなんだが
お前が無闇に絡んでる&お前も具現生ゼロなのになんで謝らなきゃならんのねん

391 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 16:43:16.71 .net]
>>376
だったら何を言いたいのかさっぱり。単に絡みたいだけか

392 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 16:45:59.83 .net]
今更なんの話かわかってませんっていうのかよw
↓この話だろ。「?」で聞いているところが質問だよ。それぐらいわかれアホ

Excelから出力したCSVのように一行(?)の中に改行が含まれた
データを扱うにはどうしたら良いでしょうか?

もう少し具体的に書きます。

カンマ区切りのCSVデータだと仮定して、
シェルスクリプトの中に関数を一行ごとに呼び出し、
列を引数に対応させたいです。

例えば以下のような内容のファイルがあったとして
a1,a2,a3,a4
b1,b2,b3,b4
c1,c2,c3,c4

syori "a1" "a2" "a3" "a4"
syori "b1" "b2" "b3" "b4"
syori "c1" "c2" "c3" "c4"

という風にsyori関数を呼び出したいのです。

ただし実際には各項目(a1等の部分)にExcelから出力したデータのように
改行やカンマやダブルクォートやシングルクォートや空白が入ることがあるのです

393 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 16:50:13.04 .net]
何を言っているのだか。最初からCSV形式のデータ扱う話なんかしてないって言っておきながら、前レスではCVSのこと「だけ」のレスなことだから、そのCVSのことだけのことを何を言いたいのかだよ

すでに書いたが、
データ | フィルタ | シェルスクリプト(関数なり) | フィルタ > データ
でしかない。CVSはどうフィルタを書く上では具体的にそれしかでしかないからだけだな

てか、その設問がそんなにきになるならお前が答えろよっw

394 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 16:54:06.97 .net]
>>380
お前、実際に脳内でどう変換されるか考えてないだろ?
最初のフィルタで\nを全部改行コードにしてしまうと
シェルスクリプトで区別できなくなるんだよ。

395 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 16:54:09.52 .net]
>>380
× CVS
○ CSV
まあ、たぶん他でもやってるだろうけど、すまんが、読み替えてください

396 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 16:55:28.23 .net]
>>381
はあ????
最初のフィルタでやることは改行コードを他の何かにするに決まってるだろ。なんで逆のことをするねん?さっぱりわからん

397 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 16:56:05.49 .net]
ダメだ。異次元すぎる>>381なんて言われると、バカだろとしかおもえん

398 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 16:57:43.94 .net]
>>383
>改行コードを他の何かに
行端/レコードの終わりでない改行コードだけな。異次元な人なので、行端/レコードの終わりもと思われそうなので、いちおうw

399 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 17:01:19.44 .net]
>>383
> 最初のフィルタでやることは改行コードを他の何かにするに決まってるだろ。
はい、言質を取りました



400 名前:386 mailto:sage [2018/06/10(日) 17:02:32.48 .net]
最 

401 名前:堰@の フ ィ ル タ で デ ー タ に 含 ま れ る
改 行 コ ー ド を 他 の な に か に 変 換 す る な ら ば
今度はシェルスクリプトの関数に渡す前に
改行コードに戻さないといけません

でないとこれが実現できません

> syori "a1" "a2" "a3" "a4"
> syori "b1" "b2" "b3" "b4"
> syori "c1" "c2" "c3" "c4"
>
> という風にsyori関数を呼び出したいのです。

なので1データごとに改行コードをもとに戻す処理が必要になります。
すでに指摘してますがforkが発生し遅くなります。
[]
[ここ壊れてます]

402 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 17:02:57.65 .net]
言質ww
まあ、永遠に「否定だけ」してろ。もうオツムの具合わかったので、いいよ、どう思われようが

403 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 17:04:45.37 .net]
>>385
それを実現するには1データずつ処理 
しなければいけませんね。

デ ー タ 全 体 を 一 気 に 変 換 し よ う と す る と、
区別できないんで

404 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 17:05:24.55 .net]
>>387
言い方が伝わらなかったようで、それは残念。データの改行を他の何かにな。そういう意味での>>386なんだがなあ。まあ、言い方は悪かったかもしれない
で、その指摘はなんらアホな指摘にしかなってません...もう、いいや、勝手にしてくれ

405 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 17:07:18.69 .net]
>>388
「言質」しらんのか?
そんなことじゃ不慮の事故で死んだ時困るぞ

406 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 17:07:51.94 .net]
多分\エスケープ云々は途中でなんらか処理をする時にRFC準拠のエスケープだと不都合だからじゃないかな
「Mika says "I'm Happy"」という文を一つのフィールドとして処理するとき
RFC準拠だと
「Mika says ""I'm Happy""」になるけど、例えばこれをsed(1)やらawk(1)に通したいと思ったときは
「Mika says \"I'm Happy\"」という形にしたほうが処理しやすいでしょう?

そういうことなんじゃないかな。

407 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 17:09:13.29 .net]
>>389
シェルスクリプトに合わせた出力すればええねん

408 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 17:09:28.43 .net]
>>390
だから デ ー タ の中の改 行を何かに変 換すると
もとに戻す処 理を 一 行 一 行やらない といけないから
遅くなるって指摘をずーっと前にした
その遅く なる理由を思 いつかなかった んだろ?

409 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 17:09:57.89 .net]
>>393
>>392 でも言ってるよ



410 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 17:10:08.09 .net]
つーかなんでさっきから、おっぱいがいっぱいとかで
書き込めないんだ?変な言葉書いてないだろ

411 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 17:17:21.14 .net]
>>394
なんで一行一行なんだか。sedかtrでやりゃええことやん。それが一行一行か?
遅くなる遅くなるって遅くなるに決まってるやん。条件によりそれが妥当かどうかなんてなんでそう否定できるのか不思議でならない
んな速度速度言うなら、Cなりでやればって言うw 遅い遅い言うてるけど、お前のもじゃどうすんの?ってのがさっぱりだな

412 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 17:18:30.12 .net]
>>395
何を言いたのかわかりません

413 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 17:22:11.92 .net]
>>392
> 「Mika says \"I'm Happy\"」という形にしたほうが処理しやすいでしょう?
今の話はもっと複雑で

「Mika says "I'm Happy
'couse picked up \10."」

という文だったらどうするか?って話なんだけどな。
いやわかるよ。どうすればいいかは。
問題はどうやってそれを実現するかって話

sedやawkに通す前に、変換すんの?

414 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 17:24:25.73 .net]
>>399
最後にマジれすすると最初のフィルタはひとつのawkだけでできる。めーんどくさいけど

415 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 17:25:37.95 .net]
>>397
sedやtrを使うと遅いfork、子プロセス生成が行われるからね
データ量に比例してその回数が増えるやり方は駄目
1回か固定の数回でできるって言うなら話は別だけど

416 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 17:26:19.38 .net]
>>400
最初だけできてもだめ駄目

これが実現できないと駄目

> syori "a1" "a2" "a3" "a4"
> syori "b1" "b2" "b3" "b4"
> syori "c1" "c2" "c3" "c4"
>
> という風にsyori

417 名前:関数を呼び出したいのです。 []
[ここ壊れてます]

418 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 17:39:23.49 .net]
>>401,402
ダメダメ言ってないで、少しは考えろ。どっちも指摘がトンチンカン

419 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 17:48:10.30 .net]
思ったんだが
正規表現でやらずに有限状態機械を作って
if ダブルクオートで始まらない
  コンマを探して終了
else
  ""でない"に続くコンマを探して終了

とすれば解決するんじゃないかな。少なくともRFC勧告に則ってるCSVは。



420 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 18:47:23.27 .net]
どういうことだ

421 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 19:24:35.96 .net]
盛り上がりすぎだろwwww一日100近く伸びるってどんだけだwwww

422 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 20:05:44.39 .net]
>>385
どうやってそれを区別するの?

423 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 20:07:14.87 .net]
>>397
sedは改行コードで切れちゃうから、データ中の改行と行の区切りの区別をつけられないだろ

424 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 20:08:19.79 .net]
>>404
CSVじゃないらしいので、"が閉じてる必要はないだろう?

425 名前:名無しさん@お腹いっぱい。 [2018/06/10(日) 20:27:13.49 .net]
【またカミカゼ暴走、群馬のスーパー、重傷9人】 放射能が原因だけど、国防上、トップシークレット?
rosie.5ch.net/test/read.cgi/liveplus/1528627781/l50

426 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 20:50:13.84 .net]
>>408
後処理のだぞ。そのデータ中の改行と行の区切りの区別をつけるために最初にータ中の改行を処理して、終わったらデータ中の改行を戻すって話だぞ?
少しは処理を想像そしてからなんか言ったら?すごい近視眼で明後日な文句言う前に

427 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 20:55:32.25 .net]
>>409
CSVじゃないからあって言うのもいるけど、だったらデータはどう表すのだろうな
データ中の改行と行の区切りの改行ってわからなくね?そのためにデータの始め終わりを表す何かが必要でそれが何かを言ってないんだったら、それを " として話をしてもおかしくはないってか、それしかないだろう
なんでそんな近視眼なツッコミばかりやねん

428 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 20:56:07.54 .net]
>>282

GNU awk の FPAT を使ってみる。一論理行のデータ数は4個で固定、という前提。

gawk -v RS='\0' -v FPAT='"(([^,\n]*)|(([^"]|\\\\"|\"\")*))"' \
'function syori(v1,v2,v3,v4){ ## ここで何らかの処理 ## }
{
i=1
while(i<NF){
syori($(i++),$(i++),$(i++),$(i++))
}
}' data.txt

429 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 22:03:59.12 .net]
>>411
> 終わったらデータ中の改行を戻すって話だぞ?
そのときに全データの改行を一度に戻すとデータの中の改行と
データ区切りの改行の区別がつかなくなってしまうので、
1データずつ処理する=1行ずつsedなどを実行して遅くなるってことには
気づきましたか?



430 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 22:29:15.51 .net]
>>411
データ中の改行とデータの区切りの改行はどう区別するんだよ。
同じコードだろ。しかもCSVじゃないんだろ?""でくくられてないんだぜ。

431 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/10(日) 22:30:35.05 .net]
>>412
だからさ、それ、sedで書いてみろよ。
絶対おまえにはかけないから。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<258KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef