[過去ログ]
シェルスクリプト総合 その27 (1002レス)
シェルスクリプト総合 その27 http://mevius.5ch.net/test/read.cgi/unix/1525337663/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
282: 名無しさん@お腹いっぱい。 [] 2018/06/08(金) 23:18:13.62 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から出力したデータのように 改行やカンマやダブルクォートやシングルクォートや空白が入ることがあるのです http://mevius.5ch.net/test/read.cgi/unix/1525337663/282
284: 名無しさん@お腹いっぱい。 [sage] 2018/06/08(金) 23:19:28.84 >>282-283は、ここから移動してきました 【Bash】Windows Subsystem for Linux【WSL】3 https://mao.5ch.net/test/read.cgi/linux/1528141781/ http://mevius.5ch.net/test/read.cgi/unix/1525337663/284
328: 名無しさん@お腹いっぱい。 [sage] 2018/06/10(日) 09:26:13.67 いや>289で答えとるやん >318ってようは>282の質問し直しでしょ http://mevius.5ch.net/test/read.cgi/unix/1525337663/328
413: 名無しさん@お腹いっぱい。 [sage] 2018/06/10(日) 20:56:07.54 >>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 http://mevius.5ch.net/test/read.cgi/unix/1525337663/413
463: 名無しさん@お腹いっぱい。 [sage] 2018/06/11(月) 00:03:29.86 >>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 http://mevius.5ch.net/test/read.cgi/unix/1525337663/463
522: 名無しさん@お腹いっぱい。 [sage] 2018/06/12(火) 12:05:07.20 >>520 これってどれ? ここ>>282-以降にある記述だとてんで仕様になってないから、 仕事レベルとまではいかないまでも、 学生演習の問題として出せる程度には仕様をまとめて書いて。 あとPythonに限らずスクリプト言語はどれでも シェルにパイプ繋いで任意のシェルコマンドが実行できるから、 シェルにできてPythonでできないことなんてないよ。 勿論シェルでできないことも普通にできるし。 http://mevius.5ch.net/test/read.cgi/unix/1525337663/522
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
1.637s*