シェルスクリプト総合 その27 at UNIX
[2ch|▼Menu]
[前50を表示]
400:386
18/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:名無しさん@お腹いっぱい。
18/06/10 17:02:57.65 .net
言質ww
まあ、永遠に「否定だけ」してろ。もうオツムの具合わかったので、いいよ、どう思われようが

403:名無しさん@お腹いっぱい。
18/06/10 17:04:45.37 .net
>>385
それを実現するには1データずつ処理 
しなければいけませんね。
デ ー タ 全 体 を 一 気 に 変 換 し よ う と す る と、
区別できないんで

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

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

406:名無しさん@お腹いっぱい。
18/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:名無しさん@お腹いっぱい。
18/06/10 17:09:13.29 .net
>>389
シェルスクリプトに合わせた出力すればええねん

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

409:名無しさん@お腹いっぱい。
18/06/10 17:09:57.89 .net
>>393
>>392 でも言ってるよ

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

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

412:名無しさん@お腹いっぱい。
18/06/10 17:18:30.12 .net
>>395
何を言いたのかわかりません

413:名無しさん@お腹いっぱい。
18/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:名無しさん@お腹いっぱい。
18/06/10 17:24:25.73 .net
>>399
最後にマジれすすると最初のフィルタはひとつのawkだけでできる。めーんどくさいけど

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

416:名無しさん@お腹いっぱい。
18/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:名無しさん@お腹いっぱい。
18/06/10 17:39:23.49 .net
>>401,402
ダメダメ言ってないで、少しは考えろ。どっちも指摘がトンチンカン

419:名無しさん@お腹いっぱい。
18/06/10 17:48:10.30 .net
思ったんだが
正規表現でやらずに有限状態機械を作って
if ダブルクオートで始まらない
  コンマを探して終了
else
  ""でない"に続くコンマを探して終了
とすれば解決するんじゃないかな。少なくともRFC勧告に則ってるCSVは。

420:名無しさん@お腹いっぱい。
18/06/10 18:47:23.27 .net
どういうことだ

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

422:名無しさん@お腹いっぱい。
18/06/10 20:05:44.39 .net
>>385
どうやってそれを区別するの?

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

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

425:名無しさん@お腹いっぱい。
18/06/10 20:27:13.49 .net
【またカミカゼ暴走、群馬のスーパー、重傷9人】 放射能が原因だけど、国防上、トップシークレット?
スレリンク(liveplus板)

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

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

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

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

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

432:名無しさん@お腹いっぱい。
18/06/10 22:42:11.32 .net
>>414-416
前処理と後処理を混同してあーだこーだ言われても。アホかっ

433:名無しさん@お腹いっぱい。
18/06/10 22:48:58.34 .net
>>417
言い訳はいいから書いてみろよ
前提条件は後出しでどんどん追加していいからw

434:名無しさん@お腹いっぱい。
18/06/10 22:49:09.09 .net
もうそろそろ、安全な文字に変換するというアプローチ
(例えば>>289のようなもの)が
ムダで効率が悪いってことに気づきませんかね?
もう一回煽りますね?
>>323
正直、そういう解答を出してほしかったね。だせるかなーって思っていたけど
シェルスクリプトでそういうデータを扱うなんておかしいとかのたまうばかり
\x1c(ファイル分離)、\x1d(グループ分離)、\x1e(レコード分離)、\x1f(ユニット分離)は
まさにそういう用途で使うもの。ここの連中の技術力の低下を感じる。

435:名無しさん@お腹いっぱい。
18/06/10 22:49:14.03 .net
もう一から説明しないと、情報処理の基本すらわかってないようなので
バカバカ


436:オすぎだけど、 ・改行がデータ中とレコードの終わりを示すのが混在している ・シェルスクリプトは基本、改行は改行でしかなく、データ中なんて知らんただの一行=レコードがブッタ切られる ・データ中の改行を他のナニかに変えれば、シェルスクリプトは一行=1レコードと認識する 前処理:データ中の改行だけをナニかに変える 本処理:改行が終端の一行=1レコードを処理する 後処理:ナニかに変えたのを改行に戻す たった、これだけのことをなぜ理解できないでトンチンカンなことばっかり言うのか。前処理をsedでできるなんて言ったことないぞ(できるかもだが、それはもっと面倒なの俺は考えんw)。後処理はsedでできることは馬鹿でもわかるだろうにぃぃぃ



437:名無しさん@お腹いっぱい。
18/06/10 22:50:39.10 .net
>>418
なんでそんなに出せ出せ言うのかww
その頭の悪さというか未経験ぶりは、元の質問者か?と疑うぞ

438:名無しさん@お腹いっぱい。
18/06/10 22:50:59.99 .net
>>420に補足すると、
(POSIXの範囲では)readは必ず改行コードでぶった切られる

439:名無しさん@お腹いっぱい。
18/06/10 22:53:10.76 .net
>>420
> 前処理:データ中の改行だけをナニかに変える
> 本処理:改行が終端の一行=1レコードを処理する
> 後処理:ナニかに変えたのを改行に戻す
それは理解しているが、
1. 改行を何かに また 何かを改行にするには、どうやるのか?
2. 変える または 戻す 処理は1コマンドで実行できるのか?
の答えが、1行ずつfork、execしなきゃならないから
データ量に比例して遅くなるって話をしてる

440:名無しさん@お腹いっぱい。
18/06/10 22:55:00.78 .net
>>423
お前にじゃねえよ。お前は面倒なのでいいよw
遅い遅い言っていれば。1行ずつfork、execしなくてもいい方法もあるのにそこには考えが及ばないだろうし

441:名無しさん@お腹いっぱい。
18/06/10 22:55:49.68 .net
やたらスレが延びてるけど動くモノが出来上がる気配がない
さっさと手を動かせよ

442:名無しさん@お腹いっぱい。
18/06/10 22:56:51.41 .net
>>419
「効率悪い」のに「そういう解答を出してほし」かったの?
ちょっと意図が分かりかねるな

443:名無しさん@お腹いっぱい。
18/06/10 22:56:58.92 .net
> 1行ずつfork、execしなくてもいい方法もあるのに
それがもっと遅くなる方法だったら笑うがねw

444:名無しさん@お腹いっぱい。
18/06/10 22:58:11.88 .net
>>426
お前馬鹿だわ
U+001EやU+001Fを区切り文字として利用するんだから
わざわざ改行コードなどを使われない文字に変換する必要ねーだろw

445:名無しさん@お腹いっぱい。
18/06/10 22:58:14.56 .net
最初の質問者じゃなかった、何を目的に延々と絡んでるのか意味不明すぎ
できないできないってばかりで

446:426
18/06/10 22:59:16.28 .net
あ、「安全な文字」っていうのは「通常の用途に使われるけれども日本語圏では滅多に使われない文字」の意味だったのね。
俺の解釈としてはUnicodeに収録されてる四種の区切り文字も「安全な文字」の類に入るからさ。
勘違いしてすまんな

447:名無しさん@お腹いっぱい。
18/06/10 22:59:31.44 .net
bash拡張は置換命令あるけど、
POSIXシェルの場合、外部コマンドを呼び出す以外に
置換命令はないんだよ。知ってる?

448:名無しさん@お腹いっぱい。
18/06/10 23:03:46.06 .net
>>430
> 俺の解釈としてはUnicodeに収録されてる四種の区切り文字も「安全な文字」の類に入るからさ。
まさに、ぽか〜んだわw
今度はお前にUTF-8の講釈をしないといかんのか?
Unix系で簡単に使えるUnicodeはUTF-8しかないが
(その他のエンコードは、文字の中にNULL文字が入るためシェルスクリプトで扱えない)
そのUTF-8はASCII互換であるため、U+001EやU+001Fは
ASCIIコードの0x1Eと0x1Fと全く同じであるため、
この文脈で、Unicodeかどうかなんて考える必要ないんだよ

449:名無しさん@お腹いっぱい。
18/06/10 23:05:23.11 .net
>>428
それは元々のデータがそうであるってこと?そんなんだったら別にこのスレで話題にするようなもんじゃないだろう
いつからそんなのが前提になってるねんwなんかムチャクチャぶりが...ww

450:名無しさん@お腹いっぱい。
18/06/10 23:07:34.36 .net
>>430
なんか変に絡まれてるな
全く理解できるから気にすんなw

451:名無しさん@お腹いっぱい。
18/06/10 23:13:46.83 .net
>>433
> それは元々のデータがそうであるってこと?
ちょっと違うな
「元々のデータがそうであってもよい」ってこと
元々のデータ形式について指定はないのだから
(処理するには効率の悪い)CSVデータでも


452:OKだし、 どんなデータでもよい そのデータ形式も含めて、 どうしたらいいでしょうか?という話だ



453:名無しさん@お腹いっぱい。
18/06/10 23:15:22.00 .net
>>435
データの改行とそうじゃない改行をどうすんの?どうやんの?

454:435
18/06/10 23:16:17.88 .net
まあ、そのデータもシェルスクリプトで生成はするんだけどな
シェルスクリプト1 → 何らかのデータ形式 → シェルスクリプト2
「何らかのデータ形式」のデータの中に(データ区切りの改行とは別に)
1データの値として改行等が含まれることがあるのでどうすっかなーって話

455:名無しさん@お腹いっぱい。
18/06/10 23:16:40.28 .net
>>432
お前は>>323を引用して
> そういう解答を出してほしかった
と言ってるんだろ? UnicodeはASCIIの範囲ではそれと互換なんだからUnicodeかそうじゃないかなんてどうでもいいだろうが
お前が言ってるのは
「フィールド区切りにはカンマやアルメニア文字ではなくそれ専用に用意されている文字種を使いましょうね」
ってことだろ? なんか間違ってる?
「ポカーン」とするのもいいけれど、その前に文章をよく読め。脊髄反射でレスするな。

456:名無しさん@お腹いっぱい。
18/06/10 23:17:19.92 .net
>>436
> データの改行とそうじゃない改行をどうすんの?どうやんの?
そこをどうするのが質問だって〜の

> Excelから出力したCSVのように一行(?)の中に改行が含まれた
> データを扱うにはどうしたら良いでしょうか?
って書いてあるんだろ

457:名無しさん@お腹いっぱい。
18/06/10 23:18:11.57 .net
>>437
ん?変換するんじゃないの?変換するなら別にコードがどの値とかは関係ないだろうし??ん??

458:名無しさん@お腹いっぱい。
18/06/10 23:19:01.94 .net
>>438
> ってことだろ? なんか間違ってる?
間違ってるよ。
>>289 の案に対して置換すんなボケっていってる

459:名無しさん@お腹いっぱい。
18/06/10 23:19:23.68 .net
>>439
初期から出てるだろ

460:名無しさん@お腹いっぱい。
18/06/10 23:20:29.10 .net
>>440
だから 改行コードとか\を 安全な文字に置換すんなってw

461:名無しさん@お腹いっぱい。
18/06/10 23:21:35.91 .net
また変換すんな君が出てるし。代替案を何も言わずに遅い遅いだけな。お前が遅々として進まんわっ

462:名無しさん@お腹いっぱい。
18/06/10 23:21:59.29 .net
>>442
> 初期から出てるだろ
残念 ながら出てない。 \ を安全 な文字に変 換ってことは
つまりデータを 変 換すると言ってる わけだが、
データは 変換(置換)するななってのが
俺の煽ってる内容

463:名無しさん@お腹いっぱい。
18/06/10 23:22:01.17 .net
>>435
CSVのRFCはフィールド・レコード区切りにU+001F/Eを使えなんて一言も言ってねぇぞ
つーかそれこそコンマと改行が区切り文字ですよと言ってる。
そういうデータを扱うことを議論してる時に、横から偉そうな態度で
「データ区切り専用の文字があるんだから元のデータにそれを使うべき」
なんて言われてもなぁ……。
あなたは論理的思考に弱いようだからもう一度同じことを違う言い方で繰り返すと、
「前提を無視した発言は控えてください」
分かった?

464:名無しさん@お腹いっぱい。
18/06/10 23:22:47.84 .net
>>445
お前は何も進まないので、もう以後無視します

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

466:名無しさん@お腹いっぱい。
18/06/10 23:24:21.02 .net
>>446
> CSVのRFCはフィールド・レコード区切りにU+001F/Eを使えなんて一言も言ってねぇぞ
この期に及んでなんでまだCSVの話してんの?
CSVじゃないですって何度も言ってるよね?

467:名無しさん@お腹いっぱい。
18/06/10 23:24:54.06 .net
>>448
いやいやいやいやwwダメだこりゃ
なんら代替案にもなってないのだけど。なんかやけに繰り返すなwやっぱり遅々として進まんな。じゃ、お元気で

468:名無しさん@お腹いっぱい。
18/06/10 23:26:44.47 .net
>>449
お前さ&も一人さ、わざとめちゃくちゃなレスをして楽しんでるだけだろ?
もうそうとしか思えない

469:名無しさん@お腹いっぱい。
18/06/10 23:28:24.22 .net
>>450
お前本当に馬鹿だなw
1データの中に改行コードが含まれてるなら、
(データの中に含まれる改行コードではなく)
データの区切りの方を改行コードではなく、
そのために作られた制御文字を使うって話で
代替案になってるだろ
頭硬すぎw
なんで1データを必ず改行コード区切りにしないといけないのか
シェルスクリプトは1行ずつ読み


470:謔驕iのが得意)ってだけで データの区切りまで改行コード区切りにする必要はない つーかこの制御文字がなぜ用意されているかに気づかんの? いやはや、ここまで言わんと理解できないのか



471:名無しさん@お腹いっぱい。
18/06/10 23:28:31.79 .net
>>424
だからやり方書いてみろよ。
出来もしないくせに煽るからバカだと言われてることに気づけよいい加減w

472:名無しさん@お腹いっぱい。
18/06/10 23:31:18.96 .net
なんでこんなに荒れてんのよ

473:名無しさん@お腹いっぱい。
18/06/10 23:31:40.43 .net
>>452
>>422 なんですけど?

474:名無しさん@お腹いっぱい。
18/06/10 23:33:06.87 .net
>>455
>>422を書いたのも俺なんですけど?w
readが改行コードでぶった切られるからって、
データ区切りとする必要はありませんよねぇ(にやにや

475:名無しさん@お腹いっぱい。
18/06/10 23:33:38.89 .net
>>453
なんでそんな高圧な奴に「教えて」あげなきゃならんねんwアホか
下手くそな煽りだな

476:名無しさん@お腹いっぱい。
18/06/10 23:35:13.32 .net
>>454
> なんでこんなに荒れてんのよ
俺様がたどり着いたゴールにおまいらが
どこまでたどり着けるかを試していたらこうなった

477:名無しさん@お腹いっぱい。
18/06/10 23:36:47.05 .net
>>456
ん?よくわからんな。にやけぶりがw>>422はトラップすぎだなw

478:名無しさん@お腹いっぱい。
18/06/10 23:40:01.41 .net
>>459
トラップでも何でもないよ。
readの-dでできると言われたとき、
それbash拡張だって指摘するのが面倒だから
先に注意してあげただけ

479:名無しさん@お腹いっぱい。
18/06/10 23:43:44.04 .net
>>460
あー、そういうことか。いちおう試してみていたんだけどね。できんの?
後処理が必要ないのでそれができるのなら確かにそうだな

480:名無しさん@お腹いっぱい。
18/06/10 23:49:44.49 .net
>>460,461
& 遅い君
確かにできるね。っかしいなあw
これができての、後処理が無駄という話なら全然それに異存はないな。変に絡んでいたらすまんかった

481:名無しさん@お腹いっぱい。
18/06/11 00:03:29.86 .net
>>461
ん? ようやく理解したのか?
煽りフェーズが終わると途端につまらなくなるなw
普通にできるし、俺はすでに近い形のものを実装している
自分の用途に合わせて最適化してるんで、汎用的にはなってないがな
(その後に>>282を質問という形でおまいらに問題を出したのだよ)
最初はデータの方をエスケープしてたんだが目に見えて遅くなってな
エスケープの方式をシェルビルトインのprintfでアンエスケープ
できるようにもしたが大した効果はなかった。
そこで制御文字を眺めていたら、その用途ピッタリの文字を見つけたのだよ
データとしては、0x1F(US: Unit Separator)を各項目の区切り(CSVでいうカンマ相当)
0x1Eを(RS: Record Separator)を名前の通り、データ区切りとして使ってる
USの方はIFSを使うことでPOSIX準拠でforなどで処理することができる
さらに0x1D(GS: Group Separotor)を使えば階層構造があるデータを取り扱えるだろうし
0x1C(FS: File Separator)を使えば標準入力で複数のファイルを渡すようなこともできるだろう
便利だがそれに気づいたのは>>323が最初。
おまいらは最初、シェルスクリプトで扱うもんじゃないとか言っていた
>>323のあともその使い道に気づかないでいた。まだまだだなw

482:名無しさん@お腹いっぱい。
18/06/11 00:07:10.97 .net
キモ偉そう

483:名無しさん@お腹いっぱい。
18/06/11 00:15:39.42 .net
おまけで、一つだけ>>431に補足しておいてやろう
(もちろん>>431を書いたのも俺だけどなw)
> bash拡張は置換命令あるけど、
> POSIXシェルの場合、外部コマンドを呼び出す以外に
> 置換命令はないんだよ。知ってる?
置換命令は無いが、fork相当のことをせずにprintfも使わずに
エスケープされた文字をアンエスケープする方法はある
例えばエスケープの方式がよくある\記号を使うやり方だとして、
IFS='\' (エスケープが必要だったかも知れない)でデータをsplitして
caseで n


484:*) なら改行を表すエスケープ文字と解釈して 一文字目のnを ${STRING#?} で削除しつつ、 改行コードを一文字目に加えるという方法だ これはこれで遅くなるので却下したんだがなw



485:名無しさん@お腹いっぱい。
18/06/11 00:18:20.26 .net
性格が歪んでるな。これ以後の質問者とかどうするとか思わないのだろうな

486:名無しさん@お腹いっぱい。
18/06/11 00:19:46.66 .net
相手にするだけ時間の無駄だと思うが…

487:名無しさん@お腹いっぱい。
18/06/11 00:20:59.85 .net
>>466
もう人は俺がたどり着いた答えとは別の
もっといい案が出るのではないかと思って
先入観を与えないために、あえて俺がたどり着いた答えを出さずに
質問の形でかいた。
しかし、俺がたどり着いた答えに辿り着く前に
諦める奴らばかりだった。情けないなw

488:名無しさん@お腹いっぱい。
18/06/11 00:21:27.45 .net
× もう人は俺がたどり
○ もう一つは俺がたどり

489:名無しさん@お腹いっぱい。
18/06/11 00:22:08.47 .net
>>467
確かに。性格が歪んでるのを自覚してないようで

490:名無しさん@お腹いっぱい。
18/06/11 00:26:05.87 .net
>>470
俺tueee系の主人公は、大抵性格が歪んでるものだよw
大好物です(笑)

491:名無しさん@お腹いっぱい。
18/06/11 00:27:33.78 .net
某原理主義者のニオイがする

492:名無しさん@お腹いっぱい。
18/06/11 00:29:42.66 .net
>>472
アレと一緒にするのはマジで止めてくれ
発想が似ていたとしてもセンスがダサすぎる。
ショッカーとかアホかと

493:名無しさん@お腹いっぱい。
18/06/11 01:13:05.93 .net
たしかにリッチー大佐は酷い人格だけど間違ったことは言ってねえし
しかも有用なツールを作ってから、ああいう毒を吐いてる。
上で喚いてるなんの解決策も出さず人を否定し馬鹿にすることしかできない人間と比較するのは失礼千万

494:名無しさん@お腹いっぱい。
18/06/11 01:13:17.92 .net
誰かちょっと流れをまとめてくれ
誰が何を言いたいのかさっぱりわからん

495:名無しさん@お腹いっぱい。
18/06/11 01:21:58.95 .net
>>475
現実世界で死んだ

異世界で俺tueeeやってる

496:名無しさん@お腹いっぱい。
18/06/11 01:22:56.01 .net
>>474
> しかも有用なツールを作って
なんかあったっけ?
使ったこと無いな

497:名無しさん@お腹いっぱい。
18/06/11 01:42:28.78 .net
見た目でわかる文字列への置き換え派ですが、いにしえのエスケープコードの流用はいいアイデアだと思いました。

498:名無しさん@お腹いっぱい。
18/06/11 01:43:29.77 .net
>>463
後で使うかもだからブログに簡単にまとめとけw 荒らした罰な

499:名無しさん@お腹いっぱい。
18/06/11 02:22:50.42 .net
>>479
俺は書かないよ。だけどこのスレを参考にして誰かが書くかもしれないね。
その場合、このスレを参考にしましたって書いても書かなっくてもいいよ
他の誰かがこことは別に思いついて書くかもしれないけどw

500:名無しさん@お腹いっぱい。
18/06/11 02:45:32.35 .net
スレチの自覚が無いとか、本当バカ

501:名無しさん@お腹いっぱい。
18/06/11 02:49:17.37 .net
シェルスクリプトの話題なのにスレチってどういうこと?

502:名無しさん@お腹いっぱい。
18/06/11 02:57:45.51 .net
>>482
俺はすべて分かってた。
ヒントだけ出してやったんだからありがたくいただけ。
これがスレ違い以外の何物だと...

503:名無しさん@お腹いっぱい。
18/06/11 03:07:25.04 .net
ん? シェルスクリプト総合でしょ?
質問スレじゃないし
シェルスクリプトの話題で楽しめばいいじゃん?

504:名無しさん@お腹いっぱい。
18/06/11 03:30:27.23 .net
そろそろ仲直りしろよお前ら

505:名無しさん@お腹いっぱい。
18/06/11 03:44:51.73 .net
確かにそれ専用の文字があるならそれを使ったほうがいいね。
some data␟other data␟42␞
some data␟other data␟42␞
↑こういうの。
既にそういうフォーマットがあってもいいと思うけどざっと検索したところでは見付からない。
なにか不都合でもあるのか、単純にU+001E/Fの知名度が低すぎるのか。
ところでPOSIX awkはRsやFSに任意の文字って指定できたっけ。GNU awkではできたんだけれど。

506:名無しさん@お腹いっぱい。
18/06/11 04:48:35.52 .net
>>486 https://www.freebsd.org/cgi/man.cgi?query=awk&sektion=1 あるし、STANDARDSはもとより本文でも拡張したよってのは無いからPOSIXとしてあるんじゃね



508:名無しさん@お腹いっぱい。
18/06/11 04:51:18.43 .net
URLリンク(pubs.opengroup.org)
こっちかこれか。あるね

509:名無しさん@お腹いっぱい。
18/06/11 06:07:49.77 .net
つまらない点だから指摘していなかったが、
この話で U+ という表記はだめだぞ
U+ というのはUnicodeの話で+の後の16進数は
文字集合におけるコードポイントだ
U+001Eは符号方式がUTF-8だと0x1Eになるが、
UTF-16だと 0x00 0x1E(ビッグエンディアンの場合)
もしくは 0x1E 0x00 (リトルエンディアンの場合) となる
U+ だとUnicodeという文字集合を表すことになるが
符号方式がUTF-8だと決めつけることはできない

510:名無しさん@お腹いっぱい。
18/06/11 09:45:54.74 .net
あほか
最初に本データの形式仕様から制定してもいいという条件を書かないから
みんな処理元のデータ形式は弄れない前提で答えてるんやん
説明不足なのに自分だけ神視点でお題気取りか
死ぬほど痛々しいわ

511:名無しさん@お腹いっぱい。
18/06/11 10:09:41.26 .net
ようやく気づいたわ
スレを盛り上げたかったんやな

512:名無しさん@お腹いっぱい。
18/06/11 10:26:48.37 .net
俺が主役が強すぎて贔屓目にみてもだな

513:名無しさん@お腹いっぱい。
18/06/11 10:40:14.39 .net
日本語で

514:名無しさん@お腹いっぱい。
18/06/11 11:22:26.93 .net
>>490
> 最初に本データの形式仕様から制定してもいいという条件を書かないから
> みんな処理元のデータ形式は弄れない前提で答えてるんやん
データを加工(エスケープ)していいと書いてないのに勝手に加工してるやん?
だから変えたら駄目って書いてないなら変えていいって前提で
答えてるでしょ?

515:名無しさん@お腹いっぱい。
18/06/11 11:29:27.18 .net
スレは十分伸びたからもうええやろ
何と戦ってるんや

516:名無しさん@お腹いっぱい。
18/06/11 11:43:52.49 .net
自作自演ではないか

517:名無しさん@お腹いっぱい。
18/06/11 13:33:30.08 .net
結局特に解決や参考になるような話は出なかったね
まあ今更CSVで新ネタも出ないだろう

518:名無しさん@お腹いっぱい。
18/06/11 13:38:57.30 .net
まだお前CSVって言ってんのか?
そんなにCSVの話だと勘違いしていたことが
ショックだったのか?

519:名無しさん@お腹いっぱい。
18/06/11 13:40:15.04 .net
もう引っ張るなや子供かよ

520:名無しさん@お腹いっぱい。
18/06/11 13:42:59.29 .net
元データの上書きとバッファにコピーしての加工を同列に語っちゃうんだすげえな
ていうか元データの仕様からやっていいなら最初から↓で
改行的な区切り文字を許さない仕様にすればいいだけじゃね
> syori "a1" "a2" "a3" "a4"
> syori "b1" "b2" "b3" "b4"
> syori "c1" "c2" "c3" "c4"

521:名無しさん@お腹いっぱい。
18/06/11 13:44:44.59 .net
さんざん偉そうだが全くコードを出さないのでお察しでもういいだろう

522:名無しさん@お腹いっぱい。
18/06/11 14:09:05.24 .net
>>500
特に指定がない部分に関しては、
自由に変えていいと言ったの
改行が含まれてるとか、カンマやダブルクォートが含まれてるとかは
指定されているので、そこは変えたら駄目
当たり前だろ、ガキみたいな言い訳すんな

523:名無しさん@お腹いっぱい。
18/06/11 14:10:12.79 .net
> 自由に変えていいと言ったの
変えていいと言うか、もともと指定がないから
変えるのではなくどんなものでもOKってことだが

524:名無しさん@お腹いっぱい。
18/06/11 14:11:48.62 .net
>>502
これには同意する
変えてもいい/変えるべきなのは区切り文字。

525:名無しさん@お腹いっぱい。
18/06/11 15:25:33.31 .net
もういい加減コードで語れ
どれほど偉そうにしてもコードがアレだったらアレだし、偉そうにしてなくても素晴らしいコードはそれだけで尊敬されるだろう。後者が断然かっこいいのに

526:名無しさん@お腹いっぱい。
18/06/11 16:00:25.01 .net
意訳 参考にしたいのでコード教えてください

527:名無しさん@お腹いっぱい。
18/06/11 16:04:12.37 .net
いや、全然。使わないもの。それも勝手なお題のだし
まあ勉強のためというのでなら、それはあるかもだが、どんなんだかだな。そもそもコードはそういうものだろうし、教えてやるって立場なんだしなw

528:名無しさん@お腹いっぱい。
18/06/11 16:50:37.25 .net
>>506
言ってやるなw

529:名無しさん@お腹いっぱい。
18/06/11 17:10:06.71 .net
結局一行も書けてない

530:名無しさん@お腹いっぱい。
18/06/11 17:15:08.96 .net
ようやくこのスレも静かになるな…

531:名無しさん@お腹いっぱい。
18/06/11 17:51:10.54 .net
そう思うやろ? 次のネタ準備中やで

532:名無しさん@お腹いっぱい。
18/06/11 17:56:57.42 .net
なにこいつ

533:名無しさん@お腹いっぱい。
18/06/11 18:49:50.82 .net
こいつもしかしてこの間の「標準入力と標準エラー出力を同時に操作したい」のアホか。

534:名無しさん@お腹いっぱい。
18/06/11 18:55:33.57 .net
これ以上くだらん問答するならコテハンつけてくれ

535:名無しさん@お腹いっぱい。
18/06/12 03:51:38.30 .net
>>513
これって解決したんだっけ

536:名無しさん@お腹いっぱい。
18/06/12 06:46:40.08 .net
今時Python使わないでわざわざシェル使う理由って?

537:名無しさん@お腹いっぱい。
18/06/12 08:01:38.11 .net
Pythonを使う理由が特にないから

538:名無しさん@お腹いっぱい。
18/06/12 08:37:27.40 .net
pythonであるコマンドを実行して
それを他のコマンドに流すみたいな
ことが簡単にできたらね

539:名無しさん@お腹いっぱい。
18/06/12 10:53:58.20 .net
普通にできるぞ

540:名無しさん@お腹いっぱい。
18/06/12 11:54:38.75 .net
>>519
じゃあ、これ相当のことをやってみて

ここまで簡潔に書ける言語をシェルスクリプト以外しらない
シェルスクリプトは(特定の用途に対して)最善だから使ってるんだよ

541:名無しさん@お腹いっぱい。
18/06/12 11:55:23.82 .net
>>519
じゃあ、これ相当のことをやってみて
cat /etc/password | grep /bin/bash | cut -d: -f1
(なんかブロックされたからパスワードを大文字にしてる)

ここまで簡潔に書ける言語をシェルスクリプト以外しらない
シェルスクリプトは(特定の用途に対して)最善だから使ってるんだよ

542:名無しさん@お腹いっぱい。
18/06/12 12:05:07.20 .net
>>520
これってどれ?
ここ>>282-以降にある記述だとてんで仕様になってないから、
仕事レベルとまではいかないまでも、
学生演習の問題として出せる程度には仕様をまとめて書いて。
あとPythonに限らずスクリプト言語はどれでも
シェルにパイプ繋いで任意のシェルコマンドが実行できるから、
シェルにできてPythonでできないことなんてないよ。
勿論シェルでできないことも普通にできるし。

543:名無しさん@お腹いっぱい。
18/06/12 12:10:52.66 .net
大文字w

544:名無しさん@お腹いっぱい。
18/06/12 12:12:33.73 .net
>>522
これは、>>521に訂正しておいた。見れてるやろ?
>>523
多分 /etc/p@ssw0rd がブロックされるんだと思う

545:名無しさん@お腹いっぱい。
18/06/12 12:13:42.07 .net
>>522
> シェルにできてPythonでできないことなんてないよ。
あるよ。
(特定の用途に対して)シェルスクリプトほどに "簡潔にできない"

546:名無しさん@お腹いっぱい。
18/06/12 12:14:36.84 .net
そりゃまあ、冗長でいいなら、アセンブラでなんでも作れますわなw
作れるか作れないかの話なんかしてない

547:名無しさん@お腹いっぱい。
18/06/12 12:34:38.85 .net
>>521
そういうのはperlやawk向きだな。
perl -F: -anle 'print $F[0] if $F[6] eq "/bin/bash"' /etc/passwd
awk -F: '$7=="/bin/bash" {print $1}' /etc/passwd
pythonはもっと汎用言語よりだからずっと長くなる。
こんな感じか?
f = open("/etc/passwd", "r");
for l in f :
 c = l[:-1].split(":")
 if c[6] == "/bin/bash" :
  print(c[0])
ふだんpython書いてないからよくわからん。
専用言語がそれに向いた用途なら、汎用言語よりもコンパクトに書けるのは当たり前。
でなきゃ専用言語の存在価値がない。
でもたとえば改行もデータの一部として扱いたいみたいに向いてない用途だと
書きやすさも長さも逆転したりする。
ひとつの言語にこだわるんじゃなくて、用途に応じて言語を選択するのが
UNIX流だよ。

548:名無しさん@お腹いっぱい。
18/06/12 12:43:39.68 .net
import csv
[p[0] for p in csv.reader(open('/etc/pas@wd'), delimiter=':') if p[-1] == '/bin/bash']

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

550:名無しさん@お腹いっぱい。
18/06/12 13:05:44.44 .net
>>528
やっぱりそのわかりにくいのが限界ですよね

551:名無しさん@お腹いっぱい。
18/06/12 13:48:35.13 .net
>>527
> でもたとえば改行もデータの一部として扱いたいみたいに向いてない用途だと
> 書きやすさも長さも逆転したりする。
まだこだわってんのかw
中身がない反論(?)は惨めなだけやで?

552:名無しさん@お腹いっぱい。
18/06/12 13:51:53.23 .net
老害じじいかよ

553:名無しさん@お腹いっぱい。
18/06/12 13:55:48.66 .net
その話続けたければいい加減名前つけろ
NGするから

554:名無しさん@お腹いっぱい。
18/06/12 13:57:32.52 .net
だな。なんで、へー、そう書けるんだとかならずに、あれが駄目これが駄目ってばっかなんかな。会話として見ててくもそ面白くない、いらいらすんなw

555:名無しさん@お腹いっぱい。
18/06/12 14:08:40.82 .net
>>527
> pythonはもっと汎用言語よりだからずっと長くなる。
汎用言語だから長くなるんじゃなくて、
Pythonには向かない作業だから長くなるっていうのが正解

556:名無しさん@お腹いっぱい。
18/06/12 18:38:07.06 .net
>>529
RFC準拠ってなんの話してるの?
CSV形式ではないと明確に言われてるのに
まだCSV形式にこだわってるの?

557:名無しさん@お腹いっぱい。
18/06/12 18:40:26.84 .net
よほどお前がこだわってるな。てかキモいわ

558:名無しさん@お腹いっぱい。
18/06/12 18:46:13.86 .net
俺はレスしただけだけど?
>>529が書かなければ、この話をすることもなかった

559:名無しさん@お腹いっぱい。
18/06/12 18:49:00.93 .net
新参なので>>513ってなんのこっちゃと、ちょっと前スレの当該箇所を流し読みしてはいた。ふーんてな
で、>>538となんか同じようなのがあったようなww

560:名無しさん@お腹いっぱい。
18/06/12 18:51:25.65 .net
お前の落ち度だってのはわかった

561:名無しさん@お腹いっぱい。
18/06/12 18:52:26.75 .net
>>540
>>538のな?w

562:名無しさん@お腹いっぱい。
18/06/12 19:00:28.24 .net
自分のことだって自覚してるからレスしたんだろ?

563:名無しさん@お腹いっぱい。
18/06/12 19:03:32.17 .net
へ?
さすが、自分のことだけはよくわかってるな。それはお前がそうだからだろう
何を言っているのかわからん、>>538によく似合うレスだなっていう

564:名無しさん@お腹いっぱい。
18/06/12 19:12:05.82 .net
どうも同一人物みたいだが(>>539に対しての?>>540あたりからも)、だとしたら>>513はすげえなっということでw

565:名無しさん@お腹いっぱい。
18/06/12 19:16:54.17 .net
自作自演

566:名無しさん@お腹いっぱい。
18/06/12 19:18:03.28 .net
いつまでも俺のこと話題にしつづけてくれ! まで読んだ
自意識過剰すぎてきもい

567:名無しさん@お腹いっぱい。
18/06/12 19:21:22.12 .net
>>546
いやあ、本人はそうは思ってなさそうだけど?自己顕示欲は満々みたいだけど
まあ、話題にしている>>513や俺などに対する当てつけ的になら、なんかすまん

568:名無しさん@お腹いっぱい。
18/06/12 19:23:17.23 .net
自作自演2

569:名無しさん@お腹いっぱい。
18/06/12 19:27:22.55 .net
なにか気に触るようだな、繰り返しとはwなにが気に触ってるのかさっぱりだな

570:名無しさん@お腹いっぱい。
18/06/12 19:37:04.17 .net
これ以上そのクソを撒き散らすなら大量のコピペでスレ埋め尽くすぞ

571:名無しさん@お腹いっぱい。
18/06/12 19:39:25.91 .net
問題定義をはっきりせずに、回答に対して一方的にダメ出ししてるから当たり前だろ。
>>521 だって awk や perl の解は >>521 とほぼ同程度の記述量なのに
(GECOS に /bin/bash とか書いてあっても誤動作しないという点ではむしろ優れてる)
「シェルスクリプト以外しらない」とかいう視野の狭さを撤回しないし。
ほぼすべてのプログラマーにとってシェルスクリプトってのは
第二・第三言語であって、シェルスクリプトが最適な用途なら使うけど、
そうじゃない場合があることは当然知ってて、
こんな風


572:に威張って使うものじゃないんだよ。 インフラ担当ならシェルスクリプトが第一言語ってのもありうるけど、 そういう場合にはこんなに威張らないよなあ。



573:名無しさん@お腹いっぱい。
18/06/12 19:40:09.57 .net
なんでやねんっwヤツより悪質/ヤツ以下になってどうするねん
まさかお前(てか、ここ一連の)はヤツじゃないよな?

574:名無しさん@お腹いっぱい。
18/06/12 19:42:22.47 .net
この板ってワッチョイは使えるんだっけ?
次回からいれるか

575:名無しさん@お腹いっぱい。
18/06/12 19:42:45.45 .net
>>551
たぶん、前スレの最初の方で言っていた人のヤツの性質があたり的な
真っ当なやりとりはできなさそうな上に逆に私怨を持ちやすいタイプだから、そういう真っ当なのをちゃんと聞くかどうか怪しいな

576:名無しさん@お腹いっぱい。
18/06/12 21:34:04.16 .net
シェルスクリプトのデバグに関する質問です
eval XXX
というコマンドで実行されるコマンドを確かめるには
evalをechoに置き換えて
echo XXX
とやればいいですかね。
両者の間に、実行されるか表示されるだけかの違い以外の差異はありますか?
例えばある種の展開が行われないとか。

577:名無しさん@お腹いっぱい。
18/06/12 22:22:58.09 .net
eval を echo に書き換えるという方法でデバッグはできるんだけど、
a='echo $PATH'
という状況で
echo $a →「echo $PATH」と表示する
eval $a →「echo /bin:/usr/bin:/usr/local」を実行する
みたいな違いはある。
eval は引数文字列に含まれるシェルのメタキャラクタを再評価するけど、
eval 以外の普通のコマンドではそういうことはないので。
あとデバッグは sh -x スクリプト名(ないしスクリプト先頭で「set -x」)して
実行状況を標準エラーに表示させるってやり方もお勧め。

578:名無しさん@お腹いっぱい。
18/06/12 22:40:48.60 .net
>>556
ありがとうございます。
シングルクオートでも展開されるのは盲点でした。
sh -x
のほうが確実ですね……
訊いてよかったです。

579:名無しさん@お腹いっぱい。
18/06/12 22:45:26.76 .net
>>557
ちなみにevalで再評価されてるシェルのメタキャラクタは
シングルクオートじゃなくて $PATH の $ の方ね。
シングルクオートは代入時に字句解釈されるだけで、
$a の中身には残ってないので。

580:名無しさん@お腹いっぱい。
18/06/12 23:19:14.33 .net
>>551
> >>521 だって awk や perl の解は >>521 とほぼ同程度の記述量なのに
> (GECOS に /bin/bash とか書いてあっても誤動作しないという点ではむしろ優れてる)
いや、そんなことドヤ顔で言われましても・・・
4文字追加で終わりだし
cat /etc/password | grep ':/bin/bash$' | cut -d: -f1
減らそうと思えば減らせるし
grep ':/bin/bash$' /etc/password | cut -d: -f1
あれあれ、じゃあこれ↑は、"grep向き" の問題ってことですかね?w
俺が言ってるシェルスクリプト向きの問題っていうのは
既存のコマンドの実行と組み合わせが簡単に実行できるってことだよ

581:名無しさん@お腹いっぱい。
18/06/12 23:34:25.44 .net
>>551
> ほぼすべてのプログラマーにとってシェルスクリプトってのは
> 第二・第三言語であって、シェルスクリプトが最適な用途なら使うけど、
はぁ?第二とか第三とか何いってんだか。
適切な言語を使うだけの話だろ
シェルスクリプトじゃなくてPythonを使えばいいと言われたから、
"シャルスクリプトで普段やってること" = >>521で書いたような
外部コマンドの実行とそれをパイプでつないで簡単に処理することが
簡単にできるって例に出したのに、
お前は「catを実行して、その出力結果をgrep に渡して、さらにcutにわたす」
というお題を、awkやperlに置き換えるしpythonで全く違うコードに書き換えるしw
今からでも良いんやで、pythonで
「catを実行して、その出力結果をgrep に渡して、さらにcutにわたす」
を書いてみなよ。
いいか? catコマンドとgrepコマンドとcutコマンドを
ちゃんと呼び出すんだぞ。今度は間違えるなよw
ほんとシェルスクリプトがなにが得意なのか全くわかってねーわw

582:名無しさん@お腹いっぱい。
18/06/12 23:41:12.01 .net
な?www

583:名無しさん@お腹いっぱい。
18/06/12 23:43:50.91 .net
な?問題を誤解して的はずれなレスを出すんやで
話にならんわ


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

453日前に更新/258 KB
担当:undef