シェルスクリプト総合 その27at UNIX
シェルスクリプト総合 その27 - 暇つぶし2ch112:名無しさん@お腹いっぱい。
18/05/23 10:49:34.46 .net
なんだったか、2chの鯖に関する貢献があったような
当時からいたわけじゃないからどっかのサイトで知った話だが
Flash黄金期にその話がFlash化されてたから見て知ったな

113:名無しさん@お腹いっぱい。
18/05/23 12:29:35.00 .net
read.cgiの改良作業だよね。



114:接関わってはいないけど、当時はリアルタイムで見ていたし、手元の どこかに運営から住民に開示されたread.cgiも残ってると思う。 アクセスが増えて通信量が増加して、当時借りてたホスティング業者から 追い出されそうになってたんだけど、HTTPの通信をgzipで圧縮して通信量を 削減しようという話だったかと思う。 ただ、UNIX板でも話をして作業には参加していたものの、プログラム板と かの方でもガリガリやっていたような記憶がある。



115:名無しさん@お腹いっぱい。
18/05/23 14:05:37.49 .net
それとは別に SYN flood 攻撃に対し SYN cookie 有効化で対抗した時はUNIX板で主に議論してた気がする。
リアルタイムで見てたというか発言してたけど(SYN cacheと比較した得失とか書いた気が)、
こういうのはあくまで個人としての行動なので板自慢に繋げるのは好きじゃないな。
むしろ統一とかとれてなくてカオスなのが5chの良いところだと思うので。

116:名無しさん@お腹いっぱい。
18/05/23 15:36:26.79 .net
>>112
gzip圧縮ってapacheの設定じゃないの?

117:名無しさん@お腹いっぱい。
18/05/23 21:48:48.59 .net
他の顧客がいるからミドルウェアで圧縮できない、というホスティング屋を使っていたんじゃなかったのかな(後から知った話だから、違うかもしれない)

118:名無しさん@お腹いっぱい。
18/05/23 23:46:31.17 .net
オイスター作戦ね
もう15年は前でしょ

119:名無しさん@お腹いっぱい。
18/05/24 00:55:41.47 .net
>>113
新ブラッドなつかしす

120:名無しさん@お腹いっぱい。
18/05/24 07:58:22.34 .net
馴れ合いならよそでやれ(キリッ)

121:名無しさん@お腹いっぱい。
18/05/24 08:33:06.96 .net
なれ合いですらなくて、おっさんが勝手に郷愁に浸ってるだけという。

122:名無しさん@お腹いっぱい。
18/05/24 20:05:30.06 .net
$ cat a.file > b.file
とやるのと
$ cp a.file b.file
とやるので違いが生じる場合はありますか?

123:名無しさん@お腹いっぱい。
18/05/24 20:22:49.22 .net
>>120
パーミッションがどうのこうの

124:名無しさん@お腹いっぱい。
18/05/24 21:28:22.51 .net
>>120
b.fileというディレクトリがあった場合の動作

125:名無しさん@お腹いっぱい。
18/05/24 22:42:29.15 .net
ディレクトリの場合はケツに / つけろや

126:名無しさん@お腹いっぱい。
18/05/24 23:23:09.46 .net
イミフ

127:名無しさん@お腹いっぱい。
18/05/24 23:30:13.33 .net
>>123によると
cat a.file > b.file/
ってやるといいんだって

128:名無しさん@お腹いっぱい。
18/05/25 00:17:51.08 .net
意図してディレクトリじゃないからつけろもなんもないのにな

129:名無しさん@お腹いっぱい。
18/05/25 10:57:24.97 .net
>>120
CoWが効いたり

130:名無しさん@お腹いっぱい。
18/05/25 10:59:54.02 .net
そんなcpの実装ってある?

131:名無しさん@お腹いっぱい。
18/05/25 11:34:57.95 .net
Linuxのは実装はしてるみたいだな。デフォではないから話の流れでの実装してるとは言えんけど

132:名無しさん@お腹いっぱい。
18/05/25 14:50:09.69 .net
シェルスクリプトの勉強をするのにおすすめの本はありますか?

133:名無しさん@お腹いっぱい。
18/05/25 15:20:37.79 .net
最近あったな
スレリンク(unix板:900番)-902

134:130
18/05/25 16:54:14.54 .net
>>131
ありがとうございます

135:名無しさん@お腹いっぱい。
18/05/26 04:09:24.19 .net
お知恵お借りしたいです。
awk '($3 !~ /ここにパイプ区切りで記述したい/) && ($4 ~ /01/)' output.txt
上記のawkで条件に当てはまるファイルを絞り込みたいのですが
その1 別ファイルからのawkの結果を $aaa に設定してある
その2 $aaa は複数列の出力なので set コマンドにて位置パラメータに分けてある
その3 各変数を展開して文字列としてパイプで区切ってawkを使いたい。
以上のようなことをやってみたのですがどうもうまく行きません。
また、違うやり方もあるようでしたらご教示いただけるとありがたいです。
よろしくお願いします。

136:名無しさん@お腹いっぱい。
18/05/26 04:35:42.94 .net
> $aaa は複数列の出力なので set コマンドにて位置パラメータに分けてある
これはどういう意味? set はシェル自身の設定だと思うんだけども

137:名無しさん@お腹いっぱい。
18/05/26 05:07:26.79 .net
cat ZZZ.txt |grep XXX
hoge
fuga
と複数行でしたので
aaa=$(cat ZZZ.txt |grep XXX) としてみました。
そして set $aaa と設定して
$1 $2 $3 ...と変数が自動で割り振られるなら増減しても対応できるのでは考えました。
(本来は0個のときもあるのでそれも考慮しなければならないんですが)
そして $1 等に入っている変数(hogeやfuga) を展開してパイプで区切れれば動くと思うんです。

138:名無しさん@お腹いっぱい。
18/05/26 07:13:03.91 .net
ごめん俺の理解が悪いと思うのだがあなたのやりたいことが見えない。
他の人にまかせるわ。
もしくはZZZ.txtの内容をプライバシーに障らない程度に具体的に教えてほしい。
「ZZZ.txtからgrepで取り出した値をパイプで連結して処理する」という文言からは
ZZZ.txtには命令が一行ずつ書かれているように受け取れるのだが、そうじゃないよね。
それとも「パイプで繋ぐ」というのはシェルのパイプ実行ではなく単に文字列としてパイプを区切りとして使うという意味?
もしそうなら
$ cat ZZZ.txt | grep XXX | tr '\n' '|' | sed 's/|$//1'
↑こういうので行けるけど。違うでしょ?

139:名無しさん@お腹いっぱい。
18/05/26 07:35:37.60 .net
説明がヘタですみません。ZZZ.txtの中身はyoutube等の
URL タイトル 日付 がタブ区切りで複数行書かれているファイルです。
123.com hoge 02
456.com fuga 05
789.com peke 08
のような感じです。
それらから条件から当てはまる行や列を抜き出してパイプ区切りにしたいのです。
パイプの解釈は hoge|fuga で hoge or fuga と展開して awkのパターン入れて読ませたい訳です。

140:名無しさん@お腹いっぱい。
18/05/26 08:23:21.90 .net
>>137
なるほどね。こういうこと? (ZZZ.txtの代わりにヒアドキュメント使ってる)
$ cat <<. | awk '($2 ~ /(hoge|fuga)/) && ($3 ~ /02/) {print}'
example111.com hoge 02
example222.com hoge 03
456.com fuga 05
456example.com fuga 02
789.com peke 08
.
example111.com hoge 02
456example.com fuga 02

141:名無しさん@お腹いっぱい。
18/05/26 09:09:37.27 .net
勉強不足でヒアドキュメントの知識が浅くて申し訳ないのですが
多分合ってると思います。
うまくいかないのは hoge|fuga の部分が一定でなく
peke|hoge|miso だったり fuga のみだったりするので悩ましいのです。

142:名無しさん@お腹いっぱい。
18/05/26 09:53:14.80 .net
条件をコマンドの結果から作りたい&その条件をawkの条件に埋め込みたいってだけ?
hogehuga=( $(cat ZZZ.txt |grep XXX) )
SAVEIFS=$IFS
IFS=$'|'
hogehuga="${hogehuga[*]}"
IFS=$SAVEIFS
[ "$hogehuga" = "" ] && hogehuga="0個の条件"
awk '($3 !~ /'"$hogehuga"'/) && ($4 ~ /01/)' output.txt
って感じとか

143:名無しさん@お腹いっぱい。
18/05/26 10:05:05.40 .net
ああ、条件の作成は>>136の最後ですでにワンライナーで教えているのか。しつれい

144:名無しさん@お腹いっぱい。
18/05/26 10:44:16.45 .net
>>139
そのhoge|fugaはどこから来るの?
grep(1)コマンドの結果?

145:名無しさん@お腹いっぱい。
18/05/26 10:58:04.08 .net
>>135 の最初で説明してね?>>135-137は噛み合ってないだけかなw というか、>>136の確認/質問のキモがわかってないというか

146:名無しさん@お腹いっぱい。
18/05/26 11:18:16.86 .net
条件文の | をパイプとかいうからわけわかんなくなる

147:133
18/05/26 11:49:32.72 .net
そういう場合はパイプって言わないんですか。失礼しました。
正規表現でつかう or の役割を hoge fuga の間には挟みたいのです。

148:名無しさん@お腹いっぱい。
18/05/26 12:01:23.51 .net
>>145
>>136
>$ cat ZZZ.txt | grep XXX | tr '\n' '|' | sed 's/|$//1'
>↑こういうので行けるけど。違うでしょ?
って教えてくれてるやん。「違わない」「それです」でいいんじゃないの?それが違うならどう違うって言うべき


149:かと(どうみても違わないとしか思えないけど) 質問自体がアレだが自分の言いたいことをうまく説明できないのはいいとして、応えてくれてる人の言ってることがわからない/それに応えないのはアレだな



150:名無しさん@お腹いっぱい。
18/05/26 12:03:34.81 .net
awkの手前で別途 fgrep -f か egrep -f を使った方が、改行→「|」変換をサボれて楽な気がする。
fgrep/egrep -f を使うときは bashないし zsh 依存になるけど
fgrep -f <(grep XXX ZZZ.txt)
と書くともっと楽だね。

151:名無しさん@お腹いっぱい。
18/05/26 12:10:12.44 .net
\じゃないよバックスラッシュだよ
というのがありそうな気もしないでもない

152:133
18/05/26 12:32:36.46 .net
シェルスクリプト内で自動で行いたい旨を
書き損じておりました。
cat ZZZ.txt |grep XXX
hoge
fuga
から
awk '($3 !~ /hoge|fuga|neko/) && ($4 ~ /01/)' output.txt
としたいのです。
>>146
>$ cat ZZZ.txt | grep XXX | tr '\n' '|' | sed 's/|$//1'
でまさしく狙い通りの出力がされるのですが>>133のawkのパターン部にどうかけば同じ文字列が出せるかわかりません

153:名無しさん@お腹いっぱい。
18/05/26 12:38:10.49 .net
awk の文はただの文字列でしかない
awk '($3 !~ /'"$aaa"'/) && ($4 ~ /01/)' output.txt
でも、
awk "(\$3 !~ /${aaa}/) && (\$4 ~ /01/)" output.txt
でも(他にエスケープ必要なのあるかな?)、
普通にシェル変数を(文字列内に)展開するのと変わらんぞ

154:名無しさん@お腹いっぱい。
18/05/26 12:42:16.30 .net
書き損じどうこうじゃなくて、受け応えができないのが致命的ではあるなw

155:名無しさん@お腹いっぱい。
18/05/26 12:44:02.94 .net
よく見たら、
hoge
fuga
から
hoge|fuga|neko
って、nekoはどこから来たっていう。まあうっかりだろけど

156:133
18/05/26 13:37:00.34 .net
みなさん申し訳ありません
>>150のレスを見てクォートをよ&#12316;く見なおしたら動きました。
初心者のたわごとに付きあわせてしまい申し訳ありませんでした。

157:名無しさん@お腹いっぱい。
18/05/27 08:08:25.73 .net
nekoです。nekoはいます。

158:名無しさん@お腹いっぱい。
18/05/30 15:51:14.73 .net
寝た子は起こすな
寝子は起こすな

159:名無しさん@お腹いっぱい。
18/05/30 20:03:13.31 .net
sedコマンドでSGRを扱いたいんですがどうすればいいですか。
$ echo abc | sed 's/^a/\033[1m&\033[0m/1'
などとしてaを太字にしたりしたいです。

160:名無しさん@お腹いっぱい。
18/05/30 20:16:35.46 .net
echo abc | sed -e 's/^a/'$'\033[1m&'$'\033[0m/1'

161:名無しさん@お腹いっぱい。
18/05/30 21:08:39.87 .net
横からだが、
なんのこっちゃと思ったら $'' はエスケープ文字処理してくれんのね。なるほど
最初のだけでいいのでは?もしくは最初に付ける。もしくは逐一付けて閉じる
echo abc | sed -e 's/^a/'$'\033[1m&\033[0m/1'
echo abc | sed -e $'s/^a/\033[1m&\033[0m/1'
echo abc | sed -e 's/^a/'$'\033''[1m&'$'\033''[0m/1'
と思いました

162:156
18/05/31 06:51:45.12 .net
ありがとうございます。解決しました。
これは後出しになってしまいますが、POSIXの範囲でやりたかったので
$''ではなく$(printf)を使いました。

163:名無しさん@お腹いっぱい。
18/06/02 23:56:12.94 .net
英語圏の序数詞を適切に処理するシェルスクリプト(というかワンライナー)を考えたのですが添削してください
$ for i in $(seq 15); do echo $i$(case $i in *1) echo st;; *2) echo nd;; *3) echo rd;; *) echo th;; esac); done
出力は一応望み通りでまたPOSIX utils+seq(1)のみで実行可能です。

164:名無しさん@お腹いっぱい。
18/06/03 00:35:29.50 .net
11st とか 12nd になってるけどそれはいいの?

165:名無しさん@お腹いっぱい。
18/06/03 00:38:58.53 .net
なにいっとるんやこいつw

166:名無しさん@お腹いっぱい。
18/06/03 01:12:42.26 .net
なにいっとるんやってなにいっとるんやww

167:160
18/06/03 01:46:34.86 .net
すいません。>>161 さまのおっしゃる通りです。
$ for i in $(seq 30); do echo $i$(case $i in *1?) echo th;; *1) echo st;; *2) echo nd;; *3) echo rd;; *) echo th;; esac); done
これでどうでしょうか

168:名無しさん@お腹いっぱい。
18/06/03 16:20:05.98 .net
クソ

169:名無しさん@お腹いっぱい。
18/06/03 16:34:12.72 .net
いんでね

170:名無しさん@お腹いっぱい。
18/06/03 17:38:56.64 .net
まず添削してくださいってどうしてほしいんだ
ちゃんと動いてんならそれはもう正解だと思うんだが

171:名無しさん@お腹いっぱい。
18/06/03 21:36:16.19 .net
実際間違ってたんだし、いいじゃん

172:名無しさん@お腹いっぱい。
2018/06/04


173:(月) 20:30:59.60 .net



174:名無しさん@お腹いっぱい。
18/06/04 20:52:08.98 .net
エラるのはbashのバージョンのせいかな?3.2.57ではエラる/4.3.48では問題ない
だとしたらPOSIX utils云々はちょっと違うんじゃねと思わなくもない。POSIX utils云々って書いている意図がよくわからんけど

175:名無しさん@お腹いっぱい。
18/06/04 21:51:17.95 .net
case文をこうしたら3.2.57で動いた
case $i in (*1?) echo th;; (*1) echo st;; (*2) echo nd;; (*3) echo rd;; (*) echo th;; esac

176:名無しさん@お腹いっぱい。
18/06/04 22:16:01.07 .net
おおっ。ぱーふぇくつ(?)やねっ!
( が必要??なんなんなん??と謎だけど

177:名無しさん@お腹いっぱい。
18/06/04 22:26:45.14 .net
$() 内では、case の ) を case の ) と認識してないで、$( の終わりと見てまうってのか。それで普通は使わない ( をか。いちおう ( はつけてもいいのね。つけてもつけなくてもいい存在みたいだけど

178:名無しさん@お腹いっぱい。
18/06/04 22:42:04.72 .net
え……
>>164 のやつ、GNU bash 4.4.12,zsh 5.3.1,dash全てで動いたんだけど(Debian GNU/Linux)。
もちろん$()判定の不具合を回避したcase ()版でも動いたけれども。

179:名無しさん@お腹いっぱい。
18/06/04 23:08:17.44 .net
bashの前のバージョン 3.2.57 でのなんですけど

180:名無しさん@お腹いっぱい。
18/06/04 23:49:50.64 .net
あ。>>170でそう書いてあるな……。すいません。

181:名無しさん@お腹いっぱい。
18/06/05 00:18:12.94 .net
sedなどで
1. 「%」以降改行までを削除
2. ただし「%」の直前に「\」があれば削除しない
(要するにTeXシステムのコメント除去)
をしたいです。また、できればなのですがPOSIXの範疇で行いたいです。
しかし2.を表わす正規表現が分かりません。教えていただけないでしょうか。
sedでsed -e '/%/{}'のようにして{}の内部で「\」が前置されているか判定するのが一番一般的かとは思うのですが
それさえ……。
どうかよろしくおねがいします。

182:名無しさん@お腹いっぱい。
18/06/05 00:27:24.06 .net
sed -e '/^%/d' -e 's/\([^\]\)%.*$/\1/g'
でも確かTeXってオプション引数に%含まれてる場合コメントにならないんじゃなかったか?
\somecs[hoge=42%]{VAL}
↑こういうの。いや俺の記憶違いかもしれんが

183:名無しさん@お腹いっぱい。
18/06/05 01:22:58.47 .net
sedのスレもあれば
正規表現のスレもある
なんでここで聞く

184:名無しさん@お腹いっぱい。
18/06/05 01:34:56.97 .net
使えるからかな

185:名無しさん@お腹いっぱい。
18/06/05 15:36:09.34 .net
以下のCのソースコードをシェルスクリプトに直したいのですが難しくてできない状態です
お願いできますでしょうか?
Cでは動作確認済みです
インデントするとここに貼れなかったので、見にくくなっていてすみません
どなたかよろしくお願いします

#include <stdio.h>
int main(void){
int res, i;
printf("2以上の整数をキーボードから入力してください。\n");
scanf("%d", &res);
for (i = 2; i <= res; i++) {
if (i == res) {
printf("%dは素数でした。\n", res);
}
else if ((res % i) == 0) {
printf("%dは素数ではありません。%dで割り切れます。\n", res, i);
break;
}
}
return 0;
}

186:名無しさん@お腹いっぱい。
18/06/05 16:08:24.34 .net
宿題っぽい

187:名無しさん@お腹いっぱい。
18/06/05 16:10:05.52 .net
なんかここ最近大学の宿題か?っていう質問多いな

188:名無しさん@お腹いっぱい。
18/06/05 16:10:24.26 .net
丸被りしててワロタ

189:名無しさん@お腹いっぱい。
18/06/05 16:12:56.96 .net
さすがに今回のはな

190:名無しさん@お腹いっぱい。
18/06/05 16:18:19.15 .net
判定方法から見直した方がいいんじゃないの
なんか無駄そう

191:名無しさん@お腹いっぱい。
18/06/05 16:31:28.92 .net
宿題は自分でやろう

192:181
18/06/05 16:41:35.30 .net
その通りっすね
スレ汚し失礼しました

193:名無しさん@お腹いっぱい。
18/06/05 17:10:33.43 .net
以下のCのソースコードをシェルスクリプトに直したいのですが
× 難しくてできない状態です



194:馬鹿だからできないです 勝手に難しい状態にするんじゃねーよ



195:名無しさん@お腹いっぱい。
18/06/05 17:13:20.82 .net
普通に読めば自分にとっては難しいってことなんじゃ
大学生の宿題も困るが読解力の無いバカも困る

196:名無しさん@お腹いっぱい。
18/06/05 17:14:42.20 .net
だな

197:名無しさん@お腹いっぱい。
18/06/05 17:16:21.87 .net
このスレは馬鹿ばかりいる状態ですwww

198:名無しさん@お腹いっぱい。
18/06/05 17:16:51.44 .net
だな

199:名無しさん@お腹いっぱい。
18/06/05 17:18:07.86 .net
プライドで自分が馬鹿でわかりませんって言うことができないから
それは悪くねぇけどさぁ、難しい状態になっちゃんてんのよー
って言いたいからそう書いてるんだろ
それぐらい読み取れよ

200:名無しさん@お腹いっぱい。
18/06/05 17:19:01.78 .net
だな

201:名無しさん@お腹いっぱい。
18/06/05 17:22:56.16 .net
よほど気に障ったか気に入られたらしいwどっちかな?

202:名無しさん@お腹いっぱい。
18/06/05 17:37:21.07 .net
だな

203:名無しさん@お腹いっぱい。
18/06/05 17:53:12.42 .net
んだ

204:名無しさん@お腹いっぱい。
18/06/05 18:20:42.13 .net
>>194
馬鹿乙
いい加減にしとけ

205:名無しさん@お腹いっぱい。
18/06/05 18:35:06.81 .net
だな

206:名無しさん@お腹いっぱい。
18/06/05 18:35:44.97 .net
>>199
あんたよっぽど気に触ったんだねw

207:名無しさん@お腹いっぱい。
18/06/05 19:00:07.82 .net
>>194
わざわざまた出てくるとかどんだけプライド高いんだよ w

208:名無しさん@お腹いっぱい。
18/06/05 19:25:49.18 .net
>>202
拗らせるだけだからもう触んな。わかるやつにはわかってるから

209:名無しさん@お腹いっぱい。
18/06/05 19:35:30.82 .net
せやな

210:名無しさん@お腹いっぱい。
18/06/05 20:09:14.02 .net
>>189は相当に痛い人だなw

211:名無しさん@お腹いっぱい。
18/06/05 20:28:47.22 .net
Cからawkだとつまらない解になってしまうな。
awk '{for(i=2;i<=$0;i++){
if(i==$0){print $0"は素数でした 。"}
else if(($0%i)==0){print $0"は素数ではありません。"i"で割り切れます。";break;
}}}' <<< "$(read -p "2以上の整数をキーボードから入力してください。" res ;
cat <<< "$res")"

212:名無しさん@お腹いっぱい。
18/06/05 21:20:01.96 .net
>>205
いい加減にしろ。うざいって言われてるのはお前だってわかってないのか?

213:名無しさん@お腹いっぱい。
18/06/05 21:49:44.22 .net
だな

214:名無しさん@お腹いっぱい。
18/06/05 22:21:32.15 .net
curl -s "URLリンク(hage.com.json") | jq -r '.main | .detail_list[] | .file_list[] | .date, .file_title, .file_name'
これだと、date と file_title とfile_name の内容が表示されるんですが、
detail_listと同じ階層にあるnavi_nameの内容も表示させたい場合はどう書けばいいですか?
よろしくお願いします。

215:名無しさん@お腹いっぱい。
18/06/06 02:39:28.51 .net
>>209
とくにこだわりがないのであれば jq じゃなく parsrj 使えば?

216:名無しさん@お腹いっぱい。
18/06/06 02:47:20.26 .net
>>207
何言ってんだお前?

217:名無しさん@お腹いっぱい。
18/06/06 09:02:34.23 .net
aaa=(888 犬 `date +"%Y%m%d"010000 -d last-sunday`)
bbb=(777 猫 `date +"%Y%m%d"150000 -d last-Saturday`)
ccc=(666 鳥 `date +"%Y%m%d"000000 -d last-friday`)

for hoge in "$aaa" "$bbb" "$ccc"
do
if [ -e ~/${hoge[1]}_${hoge[2]:0:4}_${hoge[2]:4:2}_${hoge[2]:6:2}.mp4 ]; then
exit 0
else
ffmpeg -i ~/output/${hoge[2]}-${hoge[0]}.aac ~/${hoge[1]}_${hoge[2]:0:4}_${hoge[2]:4:2}_${hoge[2]:6:2}.mp4
fi
done
こんな感じのスクリプト書いたのですが、配列が展開してくれません。
どうすれば変数に入れた配列が機能するでしょうか
アドバイスお願いします。

218:名無しさん@お腹いっぱい。
18/06/06 09:51:21.96 .net
>>210
jqにこだわりはないが、
parsrjなんて誰も使ってないものは使いたくないなw

219:名無しさん@お腹いっぱい。
18/06/06 09:51:56.75 .net
>>212
配列はbash専用機能なので使うな

220:名無しさん@お腹いっぱい。
18/06/06 13:07:10.63 .net
>>189
状態ってなんだよwwwって話だよなあ
頭の悪い人は理解できないみたいだけど

221:名無しさん@お腹いっぱい。
18/06/06 13:12:22.57 .net
なんだかんだレスに飢えてるよね

222:名無しさん@お腹いっぱい。
18/06/06 13:23:12.77 .net
やりたいこと想像してベタにやってみたけど
printf "%s %s %s\n" ${aaa[@]} ${bbb[@]} ${ccc[@]} | while read hoge0 hoge1 hoge2; do
if [ -e ~/${hoge


223:1}_${hoge2:0:4}_${hoge2:4:2}_${hoge2:6:2}.mp4 ]; then exit 0 else ffmpeg -nostdin -i ~/output/${hoge2}-${hoge0}.aac ~/${hoge1}_${hoge2:0:4}_${hoge2:4:2}_${hoge2:6:2}.mp4 fi done ...て、ほぼ配列じゃなくなっちゃったは



224:名無しさん@お腹いっぱい。
18/06/06 13:55:28.85 .net
>>217
あとは、そのbash依存の文字列の~文字目をとってくるってのをなくそう
っていうかdate使って%Y_%m_%dとかでいいだろと

225:名無しさん@お腹いっぱい。
18/06/06 14:36:06.61 .net
よくいる偉そうにしたいのが主な目的なのがわいてる感じ

226:名無しさん@お腹いっぱい。
18/06/06 14:45:44.90 .net
そういう言葉でしか言い返せないのな
悔しかったら技術で勝負しろ

227:名無しさん@お腹いっぱい。
18/06/06 14:49:07.49 .net
どこに勝負要素があるのか分からない
しかし最近汚いコードがばらっと貼り付けられまくるのは同一人物なのか?

228:名無しさん@お腹いっぱい。
18/06/06 14:51:48.88 .net
身に覚えがなかったら勝負とか言わないよなあ。てか、勝負ってw
なにか偉そうにしたい/マウントとりたいのがありありだな

229:名無しさん@お腹いっぱい。
18/06/06 14:55:35.99 .net
>>221
違うんじゃね。汚いとか言いだしたらきりがないぞな。言うなら整形して上げたほうが意味あるんじゃね

230:名無しさん@お腹いっぱい。
18/06/06 15:23:05.47 .net
年月日を配列でw
printf "%s %s %s\n" ${aaa[@]} ${bbb[@]} ${ccc[@]} | while read hoge0 hoge1 hoge2; do
fuga=(`echo $hoge2 | sed 's/^\(....\)\(..\)\(..\).*/\1 \2 \3/'`)
if [ -e ~/${hoge1}_${fuga[0]}_${fuga[1]}_${fuga[2]}.mp4 ]; then
exit 0
else
ffmpeg -nostdin -i ~/output/${hoge2}-${hoge0}.aac ~/${hoge1}_${fuga[0]}_${fuga[1]}_${fuga[2]}.mp4
fi
done
からの~
printf "%s %s %s\n" ${aaa[@]} ${bbb[@]} ${ccc[@]} | while read hoge0 hoge1 hoge2; do
set - `echo ${hoge2} | sed 's/^\(....\)\(..\)\(..\).*/\1 \2 \3/'`
if [ -e ~/${hoge1}_$1_$2_$3.mp4 ]; then
exit 0
else
ffmpeg -nostdin -i ~/output/${hoge2}-${hoge0}.aac ~/${hoge1}_$1_$2_$3.mp4
fi
done

231:名無しさん@お腹いっぱい。
18/06/06 15:51:47.08 .net
元のソースが汚いと修正も面倒だなとw
まず一旦ループと変数をやめる
if [ -e ~/犬_2018_06_06.mp4 ]; then
exit 0
else
ffmpeg -i ~/output/20180603010000-888.aac ~/犬_2018_06_06.mp4
fi
if [ -e ~/猫_2018_06_06.mp4 ]; then
exit 0
else
ffmpeg -i ~/output/20180603150000-777.aac ~/猫_2018_06_06.mp4.mp4
fi
if [ -e ~/鳥_2018_06_06.mp4 ]; then
exit 0
else
ffmpeg -i ~/output/20180603010000-666.aac ~/鳥_2018_06_06.mp4.mp4
fi

232:名無しさん@お腹いっぱい。
18/06/06 15:57:58.57 .net
つぎに、変数に入れ直す
そして書き込もうとしたらNGワードとか言われたから
ついでに関数にする
infile=~/output/20180603010000-888.aac
outfile=~/犬_2018_06_06.mp4
output "$infile" "$outfile"
infile=~/output/20180603150000-777.aac
outfile=~/猫_2018_06_06.mp4
output "$infile" "$outfile"
infile=~/output/20180603010000-666.aac
outfile=~/鳥_2018_06_06.mp4
output "$infile" "$outfile"

output() {
$infile=$1
$outfile=$2
if [ -e "$outfile" ]; then
exit 0
else
ffmpeg -i "$infile" "$outfile"
fi
}

233:名無しさん@お腹いっぱい。
18/06/06 16:00:15.08 .net
一旦余計な変数を排除する
output ~/output/20180603010000-888.aac ~/犬_2018_06_06.mp4
output ~/output/20180603150000-777.aac ~/猫_2018_06_06.mp4
output ~/output/20180603010000-666.aac ~/鳥_2018_06_06.mp4
output() {
[ -e "$2" ] && exit 0
ffmpeg -i "$1" "$2"
}

234:名無しさん@お腹いっぱい。
18/06/06 16:02:16.64 .net
>元のソースが汚いと修正も面倒だなとw
だろ?w そこはスルーでええやん、別に求められているわけでもないんだし
まあ、お疲れ様です(嫌味ではない)

235:名無しさん@お腹いっぱい。
18/06/06 16:15:15.79 .net
日付の部分を元に戻す
output "$(date +"%Y%m%d010000" -d last-sunday)-888.aac" "犬_$(date +"%Y_%m_%d" -d last-sunday).mp4"
output "$(date +"%Y%m%d150000" -d last-saturday)-777.aac" "猫_$(date +"%Y_%m_%d" -d last-saturday).mp4"
output "$(date +"%Y%m%d000000" -d last-friday)-666.aac" "鳥_$(date +"%Y_%m_%d" -d last-friday).mp4"
output() {
[ -e "$HOME/$2" ] && exit 0
ffmpeg -i "$HOME/output/$1" "$HOME/$2"
}
くだらん文字列結合を省く
output "$(date +"%Y%m%d010000-888.aac" -d last-sunday)" "$(date +"犬_%Y_%m_%d.mp4" -d last-sunday)"
output "$(date +"%Y%m%d150000-777.aac" -d last-saturday)" "$(date +"猫_%Y_%m_%d.mp4" -d last-saturday)"
output "$(date +"%Y%m%d000000-666.aac" -d last-friday)" "$(date +"鳥_%Y_%m_%d.mp4" -d last-friday)"
output() {
[ -e "$HOME/$2" ] && exit 0
ffmpeg -i "$HOME/output/$1" "$HOME/$2"
}

236:名無しさん@お腹いっぱい。
18/06/06 16:20:37.87 .net
なんかだらだらって感じ

237:名無しさん@お腹いっぱい。
18/06/06 16:25:36.02 .net
最終的にこんな感じかな(適当にやったので途中のコードはバグありだろう)
output "%Y%m%d010000-888.aac" "犬_%Y_%m_%d.mp4" last-sunday
output "%Y%m%d150000-777.aac" "猫_%Y_%m_%d.mp4" last-saturday
output "%Y%m%d000000-666.aac" "鳥_%Y_%m_%d.mp4" last-friday
output() {
infile=$(date +"$1" -d "$3")
outfile=$(date +"$2" -d "$3")
[ -e "$HOME/$outfile" ] && exit 0
ffmpeg -i "$HOME/output/$infile" "$HOME/$outfile"
}
もっとやりたいならoutput関数を以下のような仕様の引数の関数ににしてもいいし
output 010000 888 犬 last-sunday
output 150000 777 猫 last-saturday
output 000000 666 鳥 last-friday
順番変えてこうすりゃ最初の配列と同じようになる
output 888 犬 010000 last-sunday
output 777 猫 150000 last-saturday
output 666 鳥 000000 last-friday
まあ、配列なんかいらんっちゅー話だ

238:名無しさん@お腹いっぱい。
18/06/06 16:26:18.


239:74 .net



240:名無しさん@お腹いっぱい。
18/06/06 16:32:01.63 .net
これを続けるの?もうしないだろうw

241:名無しさん@お腹いっぱい。
18/06/06 16:45:31.82 .net
シェルスクリプトの変数処理って型推論?

242:名無しさん@お腹いっぱい。
18/06/06 16:46:02.10 .net
そうだな。やるつもりはなかったが、
例えば関数を作りたくなければ、こんな感じで行けるぞってことぐらいかな
while read -r a b c d; do
infile=$(適当に修正しろ)
outfile=$(適当に修正しろ)
[ -e "$HOME/$outfile" ] && exit 0
ffmpeg -i "$HOME/output/$infile" "$HOME/$outfile"
done <<DATA
888 犬 010000 last-sunday
777 猫 150000 last-saturday
666 鳥 000000 last-friday
DATA
こういう場合は標準入力として受け取ってループで回せってことだな

243:名無しさん@お腹いっぱい。
18/06/06 16:46:21.13 .net
>>209
これお願いします

244:名無しさん@お腹いっぱい。
18/06/06 16:46:50.03 .net
>>210
それなんですか?

245:名無しさん@お腹いっぱい。
18/06/06 16:47:01.39 .net
>>234
型なんて文字列しかねーよ
HTMLのフォームからのPOSTと同じだ

246:名無しさん@お腹いっぱい。
18/06/06 16:56:31.38 .net
白状する
181からここまで貼られてるソースコード全く読んでない
読む気起きない

247:名無しさん@お腹いっぱい。
18/06/06 17:11:54.82 .net
別に構わんよ。きたねーコードだなって
直感的に思って、それを治すことで
俺の直感は正しいことを証明して
自分で納得してるだけだから

248:名無しさん@お腹いっぱい。
18/06/06 17:24:58.19 .net
それは自惚れすぎだなw

249:名無しさん@お腹いっぱい。
18/06/06 17:33:16.47 .net
誰も求めてない証明ひけらかして悦に浸ってるだけか

250:名無しさん@お腹いっぱい。
18/06/06 17:41:52.35 .net
自分が汚いコード書いてた(誰でもそうだろう)&そこから綺麗にすることを学んだとこってとこかな
もうちょっと経験つんだらそんな誰でもそうだったとこなんてスルーだろうな。綺麗にすることには際限がない/突き詰めれば&極論では個人の好みに帰結するってとこで、そんな初心者的なのにいちいち文句を言うのが低レベル的なw

251:名無しさん@お腹いっぱい。
18/06/06 17:59:50.87 .net
>>236
もうその話題は終わったよ

252:名無しさん@お腹いっぱい。
18/06/06 18:30:15.42 .net
>>244
終わってないです

253:名無しさん@お腹いっぱい。
18/06/06 18:47:23.92 .net
>>245
つまらないからいいよ

254:名無しさん@お腹いっぱい。
18/06/07 01:01:10.78 .net
>>238
a=1
echo $((a + 1))
この場合の$aは数値じゃないんですか?

255:名無しさん@お腹いっぱい。
18/06/07 02:03:34.31 .net
>>212
for hoge in "$aaa" "$bbb" "$ccc"
"$aaa" "$bbb" "$ccc"は、最初のアイテムを示すだけ(888, 777, 666)で間違い
"${aaa[@]"が正しいもしくはとしたかったのだろうが、だったらforの機能的にも変数をArrayにする必要はないだろう。その記述以下でなんかするのでないなら
aaa/bbb/cccは単なる文字列として、for内で必要となったらArrayに分解すれば簡単に目的は達成するだろう
(てか、配列にするならaaa/bbb/cccなんて個々の変数じゃなくてそれこそそれを配列にすればいいのにと思うけど)
aaa="888 犬 `date +"%Y%m%d"010000 -d last-sunday`"
...
for fuga in "$aaa" "$bbb" "$ccc"
do
hoge=$($fuga)
if [ -e ~/${hoge[1]}_${hoge[2]:0:4}_${hoge[2]:4:2}_${hoge[2]:6:2}.mp4 ]; then
...

256:名無しさん@お腹いっぱい。
18/06/07 02:12:29.31 .net
>>247
必要となったら数値とみなす/数値に変換するだけだろう
a=hoge
の場合は、hogeは数値に変換できないからしょうがないので0にしてまうし、
[ a -eq 0 ]
なんて場合は、数値に変換できないのでエラーになるし。逆にa=1とかでエラーにならないのは数値だからと思えそうだが、単に数値に変換できてエラーにならないだけだろう
あくまでも文字列でしかないのは、
a=1
a="1"
a='1'
のどれも同じってとこからもそう推察できそうな。そもそも明らかな文字列でさえa=hogeだったりするけど

257:名無しさん@お腹いっぱい。
18/06/07 02:24:52.46 .net
>>248
>"${aaa[@]"が正しいもしくは
} 閉じ忘れ。てか、"${aaa[@]}"でも間違いで、"${aaa[*]}" だな

258:名無しさん@お腹いっぱい。
18/06/07 02:25:47.02 .net
>>248
>"${aaa[@]"が正しいもしくは
} 閉じ忘れ。てか、"${aaa[@]}"でも間違いで、"${aaa[*]}" の方だった

259:名無しさん@お腹いっぱい。
18/06/07 02:27:10.73 .net
あら、なんか恥ずかしい

260:名無しさん@お腹いっぱい。
18/06/07 05:10:54.45 .net
>>234>>238>>2


261:49 以前にこちらのスレでお世話になった者で横からですが勉強になります



262:名無しさん@お腹いっぱい。
18/06/07 12:21:50.51 .net
>>248
ありがとうございます。
実は他の方のレスを見て、関数というものを調べて
ある程度スッキリしたコードにできたのですが
当初自分の頭で考えていた>>212のようなコードがが動くようにご指摘いただけたのは
非常に助かりました。ありがとうございます。

263:名無しさん@お腹いっぱい。
18/06/07 12:33:31.74 .net
質問です。bashの配列を他のbashスクリプトに
コマンドライン経由でわたすにはどうしたら良いのでしょうか?

264:名無しさん@お腹いっぱい。
18/06/07 12:34:23.18 .net
ちなみに配列変数は一つじゃなくて複数です。

265:名無しさん@お腹いっぱい。
18/06/07 12:58:55.50 .net
Arrayひとつを単一の文字列で渡して、受けたとった方がArrayに戻すかなあ
sub-script.sh "${array1[*]}" "${array2[*]}" "${array3[*]}" ...
sub-script.sh:
array1=($1)
array2=($2)
array3=($3)
Arrayのアイテムの内容がIFSに引っかかってたらIFSを書き換える(/同調)するかなあ。よくありそうなアイテムがスペースありとかだったら、アイテムの内容として入ってなさそうなタブにするとか
(IFS=$'\t'; sub-script.sh "${array1[*]}" "${array2[*]}" "${array3[*]}" ...)
sub-script.sh:
array1=($1)
array2=($2)
array3=($3)
(分解時のセパレータとしてはタブもデフォルトIFSに入っているので分解時には特に設定する必要はない)
てか、そんなに配列をばんばん使わない方がいいんじゃねと思わなくもないw

266:名無しさん@お腹いっぱい。
18/06/07 13:38:14.12 .net
>>255
コマンドライン経由の意味はよくわからないが、
多分ファイルを使うのがいいと思う。
[渡す側]
declare | grep "渡したい変数" > /path/save
[受け取る側]
source /path/save

267:名無しさん@お腹いっぱい。
18/06/07 16:52:21.73 .net
つまり配列そのままで渡せないってことですね

268:名無しさん@お腹いっぱい。
18/06/07 17:07:52.55 .net
そのままでできると思う方が全くわかってないなという。まあ全くわかってないんだろうけど

269:名無しさん@お腹いっぱい。
18/06/07 17:16:31.55 .net
ここ数日で盛り上がりすぎやろ

270:名無しさん@お腹いっぱい。
18/06/07 21:43:15.08 .net
あかんか?

271:名無しさん@お腹いっぱい。
18/06/07 21:46:19.66 .net
ええで

272:名無しさん@お腹いっぱい。
18/06/07 22:15:48.04 .net
>>255
xmlなりjsonなり独自形式なりで渡せよ

273:名無しさん@お腹いっぱい。
18/06/07 22:39:09.40 .net
言語のオブジェクト(配列)を他のプロセスにそのまんま渡せるスクリプト言語ってなんかあったっけ?
間にはシリアラズ/デシリアライズなどの仕組みがあるのは当然だが、そんなの全く意識させない言語でサポートしている言語って。フレームワークなど使えばは抜きで。スクリプト言語でなくてもいいけどとりあえずこのスレなのでスクリプト言語で

274:名無しさん@お腹いっぱい。
18/06/07 23:15:52.17 .net
>>257
あ、
>分解時のセパレータとしてはタブもデフォルトIFSに入っているので分解時には特に設定する必要はない
何言ってんだか。せっかくスペースをセパレータとされるのを避けているのに、設定しなきゃダメだろう
sub-script.sh:
ORIGINAL_IFS="$IFS"
IFS=$'\t'
array1=($1)
array2=($2)
array3=($3)
IFS="$ORIGINAL_IFS"

275:名無しさん@お腹いっぱい。
18/06/07 23:26:19.86 .net
>>265
じぇーそんとかそういうためにあるんじゃないの?

276:名無しさん@お腹いっぱい。
18/06/08 00:05:04.96 .net
>>267
シリアライズ/デシリアライズの手法/フォーマットのひとつとしてね
そゆんじゃなくて、そんな変換が見えなーい言語ってなんかあったっけ。仮にJSONを使っていたとしてもそんなの見えない

277:名無しさん@お腹いっぱい。
18/06/08 00:07:58.91 .net
見えないってのがどういう意味なのか。
PowerShellみたいのなら見えないに入るのかな?

278:名無しさん@お腹いっぱい。
18/06/08 00:18:14.42 .net
分散オブジェクトに近い...つうても実装/言語により全然見えないにはならんけど
process.TheFunc(anObject)
と、呼んだら、別プロセスの
TheFunc(anObject) {
}
に、まんまオブジェクト(ただの配列でもいいけど)が入ってるくる�


279:謔、な PowerShellはそんなんなん?分散オブジェクトかな?



280:名無しさん@お腹いっぱい。
18/06/08 00:53:32.27 .net
スレチ

281:名無しさん@お腹いっぱい。
18/06/08 01:16:08.95 .net
いや、>>259なんて思うのはどういう根拠からかなあと。他のスクリプト言語でそんなんあるんかと
また現れるかもしれんだろw まあ、スレチではある

282:名無しさん@お腹いっぱい。
18/06/08 01:20:44.78 .net
>>257,258,254 全部、シリアライズ/デシリアライズのことで、どういうシリアライズ/デシリアライズを使うかでしかなく、まあ、普通はそれしかないわなで終わってることなんだけどね
ちょっとなんか他のスクリプト言語であるのかと気になったので

283:名無しさん@お腹いっぱい。
18/06/08 03:20:33.75 .net
最近他板でも意味も分からず答える輩が増えていますね。何ででしょう。

284:名無しさん@お腹いっぱい。
18/06/08 03:21:57.82 .net
新入社員が先輩よりプログラミング知識あることを知って俺結構世間の中でも出来る方なんじゃね?って勘違いする時期だな

285:名無しさん@お腹いっぱい。
18/06/08 03:49:58.80 .net
解答のクオリティまで下がってるな
パソコンの大先生混ざっとるやろ

286:名無しさん@お腹いっぱい。
18/06/08 05:43:51.14 .net
>>270
同一プロセス(要するにPowerShell内で閉じてる)ならそんな感じの記述でオブジェクトを渡せる
ちなみにパイプでも渡せる
他のプロセスへコマンドラインとなると無理だろうね
そもそもOSレベルでもたいていのOSはコマンドラインとして文字列の配列しか渡せないし

287:名無しさん@お腹いっぱい。
18/06/08 05:51:30.48 .net
JSONは不気味な拡張子なので使ってはいけません

288:名無しさん@お腹いっぱい。
18/06/08 07:18:25.50 .net
パソコンの大先生なら使いこなせよ

289:名無しさん@お腹いっぱい。
18/06/08 22:06:27.92 .net
POSIXで定義されているどの環境でも利用できる環境変数ってあります?
$PWDとか。

290:名無しさん@お腹いっぱい。
18/06/08 22:54:13.95 .net
>>280
環境変数で決まってるのは
URLリンク(pubs.opengroup.org)
ただしOS起動中まで含めると、必ず定義されてる環境変数はない。
PWDも昔のシェルだと定義してくれなかったりする。
まあ一般ユーザー権限で動いてるならPATH、HOMEあたりの存在は期待してもいいけど。

291:名無しさん@お腹いっぱい。
18/06/08 23:18:13.62 .net
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から出力したデータのように
改行やカンマやダブルクォートやシングルクォートや空白が入ることがあるのです

292:名無しさん@お腹いっぱい。
18/06/08 23:18:34.79 .net
各項目には \ が入ることもあります。
今回はCSVではありませんが、RFC4180(=ExcelのCSVの仕様)では
改行が\nのようにエスケープされません
URLリンク(ja.wikipedia.org)
> フ�


293:Bールドがコンマ、ダブルクォート、改行を含む場合は、かならずダブルクォートで囲む。 > また、フィールドに含まれるダブルクォートは2つ並べてエスケープする。 > > "日本 CRLF > 国","""東京""","127,767,944" CRLF ↑「日本国」の国の前に改行が入っている場合



294:名無しさん@お腹いっぱい。
18/06/08 23:19:28.84 .net
>>282-283は、ここから移動してきました
【Bash】Windows Subsystem for Linux【WSL】3
スレリンク(linux板)

295:名無しさん@お腹いっぱい。
18/06/08 23:23:17.66 .net
>>283
rubyとかpythonでCSV処理用のライブラリを使うとか、
CSV処理用の専用ツール使うとか。
落とし穴が一杯あるので、シェルだけでやるのは危険。

296:名無しさん@お腹いっぱい。
18/06/08 23:24:41.88 .net
URLリンク(copiezzare.info)

297:名無しさん@お腹いっぱい。
18/06/08 23:31:03.89 .net
>>285
危険は承知で環境依存させたくないので、
シェルスクリプト(POSIX)だけでやりたいのです

298:名無しさん@お腹いっぱい。
18/06/08 23:35:52.21 .net
>>287
じゃあ
URLリンク(wwr2.ucom.ne.jp)
とかどう?

299:名無しさん@お腹いっぱい。
18/06/08 23:57:15.15 .net
邪道としては、改行コードとか\を絶対に使われない文字に置換して最後にまた戻すとかやったな
アルメニア文字とかに置換するんやで

300:名無しさん@お腹いっぱい。
18/06/09 00:06:32.51 .net
今時、シェルスクリプトが使える環境でperlやpythonがデフォルトで入ってないOSの方が稀だろう。なんかここ最近のPOSIXと言えばいいというようなのはなんかアレだな

301:名無しさん@お腹いっぱい。
18/06/09 00:12:49.10 .net
>>290
busybox、alpine

302:名無しさん@お腹いっぱい。
18/06/09 00:14:40.86 .net
>>291
そういう環境で、CSVファイルの扱いが必要かあ?

303:名無しさん@お腹いっぱい。
18/06/09 00:17:26.20 .net
そんな変わりもんを出されても
>>287がそんなの想定してるとでも思ったの?そんなの想定しているヤツは自力でできるだろうし、そんなの使うやつは必要なら自分で入れるだろう
知識自慢はいらんよw

304:名無しさん@お腹いっぱい。
18/06/09 00:21:35.51 .net
てゆうか問題に適した言語を組み合わせて問題を解くってのが
もともとのUNIXの思想だと思うので、
CSV扱うならCSVに向いた言語使う方がUNIX的だと思うのよね。
まあケースバイケースなんだけど。

305:名無しさん@お腹いっぱい。
18/06/09 00:23:20.54 .net
つまりC++ってことか。

306:名無しさん@お腹いっぱい。
18/06/09 00:25:28.50 .net
URLリンク(codezine.jp)
>gawkの開発は「完全を目指すのではなく9割をサクサクこなし、フィールドに改行を含むようなCSVファイルは専用のツールで処理すれば良い」
ですらだからなあ
Linuxはawk=gawkだが、BSDは巣の(?)awkでgawkは別に入れなければならなく、gawkの機能を使うかどうかっていう話ならわかるけど、そんなんだったらperlやpython使った方がLinuxとBSDの違いも無いだろしな

307:名無しさん@お腹いっぱい。
18/06/09 00:34:57.73 .net
>>287は単に他の言語/知識までは自分の手に余るっていう逃げだろうとしか見えんな
そこに山があるから登るっていうあえてメンドくさいことをしたいってのなら、のらないでもないけどw

308:名無しさん@お腹いっぱい。
18/06/09 00:45:11.89 .net
CSVじゃないって書いてるのに
読めない人多いね

309:名無しさん@お腹いっぱい。
18/06/09 00:50:25.58 .net
とは言ってるけど、CSVとはどう違うとかは全くだな。てか、延々とCSVのここがってしかないやん
CSVと似た何か特殊なものなら、普通にストリームの一文字一文字処理できるスクリプト使ったほうがいいだろう、てかそれしかないだろう

310:名無しさん@お腹いっぱい。
18/06/09 01:21:51.27 .net
> シェルスクリプト(POSIX)
(;^ω^)

311:名無しさん@お腹いっぱい。
18/06/09 01:40:22.57 .net
POSIXはまあいいとしてPOSIXという単語が出る度アレルギーのごとく反発する人はなんなの?
OpenGroupに親でも殺されたのか?

312:名無しさん@お腹いっぱい。
18/06/09 01:46:42.05 .net
>>290
だって課題がそうなってるんだもん

313:名無しさん@お腹いっぱい。
18/06/09 01:53:39.41 .net
>>301
本当に自身がわかって言っているのかってとこだな。その必要性とか
>>302のような冗談なら笑えるけど

314:名無しさん@お腹いっぱい。
18/06/09 02:06:03.67 .net
nkfとかiconvで 改行コードを調べたらええんちゃう?
busybox, alpineぐらいのコンテナに nkf を足したぐらいで大してでかくならんやろうに。

315:名無しさん@お腹いっぱい。
18/06/09 02:11:54.28 .net
>>287でposix shellだけで言うてるからダメだよ

316:名無しさん@お腹いっぱい。
18/06/09 03:14:25.32 .net
ぽ…POSIX

317:名無しさん@お腹いっぱい。
18/06/09 03:39:18.86 .net
今日はみなさん夜更かしですね
まるで自えn(ry

318:名無しさん@お腹いっぱい。
18/06/09 06:55:43.82 .net
>>293
お前さんこの間から痛いぞ

319:名無しさん@お腹いっぱい。
18/06/09 09:19:07.59 .net
はいはい

320:名無しさん@お腹いっぱい。
18/06/09 12:31:39.35 .net
はい、は一回

321:名無しさん@お腹いっぱい。
18/06/09 13:35:30.76 .net
はいは一回 と
はいぱー回 ってにてるな

322:名無しさん@お腹いっぱい。
18/06/09 13:36:18.92 .net
そうか?

323:名無しさん@お腹いっぱい。
18/06/09 16:10:28.91 .net
ぽしっくすなの?
ぽじっくすなの?
ぽずぃっぐずなの?
なんなの?

324:名無しさん@お腹いっぱい。
18/06/09 18:01:39.57 .net
トマトとか言ってる日本人が気にすんな。特定のそういう発音違いをめっちゃ馬鹿にしたりするのも日本人だけど

325:名無しさん@お腹いっぱい。
18/06/09 18:02:59.74 .net
相対するをあいたいするって読んだら漫画の読みすぎだろって馬鹿にされたこと思い出したわ

326:名無しさん@お腹いっぱい。
18/06/09 18:45:27.81 .net
なんのスレやねん

327:名無しさん@お腹いっぱい。
18/06/09 19:40:22.27 .net
ぽちっとな

328:名無しさん@お腹いっぱい。
18/06/09 23:38:49.68 .net
質問です。一データの中に改行が含まれた
データを扱うにはどうしたら良いでしょうか?

329:名無しさん@お腹いっぱい。
18/06/09 23:39:51.65 .net
改行を置換して読み取る

330:名無しさん@お腹いっぱい。
18/06/10 00:19:36.87 .net
1データとは

331:名無しさん@お腹いっぱい。
18/06/10 00:30:51.68 .net
>>318
そういうものはシェルスクリプトでは扱わない
適材適所
バカは同じものをなんにでも押し付けようとするから無駄に機能が肥大化する

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

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

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

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

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

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

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

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

340:名無しさん@お腹いっぱい。
18/06/10 12:04:18.14 .net
>>328
それは


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



342:名無しさん@お腹いっぱい。
18/06/10 12:18:36.59 .net
イミフ

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

344:名無しさん@お腹いっぱい。
18/06/10 13:18:33.58 .net
イミフ
データの中に改行コードがあるってだけだろ

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

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

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

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

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

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

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

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

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

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

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

356:名無しさん@お腹いっぱい。
18/06/10 16:07:14.39 .net
> "Excelから出力したCSVのように" 一行(?)の中に改行が含まれた
> データを扱うにはどうしたら良いでしょうか?
> カンマ区切りのCSVデータだと "仮定して" 、
> 今回はCSVではありませんが、

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

357:名無しさん@お腹いっぱい。
18/06/10 16:07:56.46 .net
>>343
> 因みにCSVはRFCで「内部改行はCRLF」と定まっているので
なるほど、\n のようにエスケープしてはいけないんですね

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

359:名無しさん@お腹いっぱい。
18/06/10 16:10:06.96 .net
>>345
だったら好きにすれば?

360:名無しさん@お腹いっぱい。
18/06/10 16:10:50.12 .net
>>343
> 一度全部置換してから読み取ればいいんじゃないですか(名推理
そして一行ずつ読み取るわけですねw
そりゃそうでしょう。\nを全部改行コードに戻してしてしまったら、
区別できないですからね

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

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

363:名無しさん@お腹いっぱい。
18/06/10 16:12:08.78 .net
>>347
> だったらお前がそのわけわからんCVS形式でない答えを応えれtばええんちゃんですかね
データの中に改行コードがあるってだけで、
フォーマットは最初から指定してないよ?
その場合どういうやり方があるでしょうって話なんだが、
CSVだと思いこんで効率の悪い方法しか思いつかず
指摘したら逆ギレするのやめなよ?ダサいから

364:名無しさん@お腹いっぱい。
18/06/10 16:12:51.65 .net
>>338
MINIX でも使ってるの?

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

366:名無しさん@お腹いっぱい。
18/06/10 16:13:34.23 .net
>>353
へー、MINIXも遅いんですねー

367:名無しさん@お腹いっぱい。
18/06/10 16:14:28.24 .net
えっ、


368:一行づつ fork + exec してるって本気で思い込んでるんだ…



369:名無しさん@お腹いっぱい。
18/06/10 16:16:58.31 .net
>>352,354
...はあ...
マジで言ってるの?

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

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

372:名無しさん@お腹いっぱい。
18/06/10 16:24:15.94 .net
>>357
仕様よんでこい
URLリンク(www.kasai.fm)
CSVの仕様においてエスケープとは
ダブルクォート " を "" と二つ連続させるものだ
\記号でエスケープする仕様はない

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

374:名無しさん@お腹いっぱい。
18/06/10 16:26:22.60 .net
もう一つ解説記事
URLリンク(codezine.jp)
>  改行コードはプラットフォームによって異なります。一般的にWindowsは
> <CR><LF>、UNIXは<LF>です。
>  ※2008/04/16追記:RFCでは末尾(レコードの区切りとして)の改行は
> <CR><LF>を推奨しています。CSVを解釈するプログラムではどちらの
> 改行コードでも読めるように作ることをお勧めします
> ダブルクォートで囲む場合
> "山田","太郎","値に
> 改行や,カンマや""ダブルクォートが含まれても問題ありません。"
> まれにCSVの方言で\エスケープを行うことがあります。
>
>\エスケープを行う特殊な例
>"山田","太郎","値に改行\nや\,カンマや\"ダブルクォートが含まれても問題ありません。"
> この方言はあまり普及していませんので、利用するのは避けましょう。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

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

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

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

378:名無しさん@お腹いっぱい。
18/06/10 16:28:48.64 .net
もう一つw
URLリンク(www.upken.jp)
> RFC4180準拠
>  基本
>  ヘッダーはあってもなくてもよい
>  空データフィールドがある
>  前後にスペースがあっても無視しない
>  ダブルクォーテーションで囲む場合は同じレコードのすべてのフィールドをダブルクォーテーションで囲む
>  改行、ダブルクォーテーション、カンマを含むフィールドは、ダブルクォーテーションで囲むべき
>  ダブルクォーテーションで囲まれているフィールドでダブルクォーテーションを使用する場合は、ダブルクォーテーションでエスケープする
>  


379:非常に長い文字列を考慮 >  複合パターン



380:名無しさん@お腹いっぱい。
18/06/10 16:29:45.29 .net
>>364
> シェルスクリプトでどう扱うかだぞ?
CSVを扱うという話はしてない
\ でエスケープするのは遅くて無駄という話ならしたがね

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

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

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

384:名無しさん@お腹いっぱい。
18/06/10 16:36:40.96 .net
>>368
CSVの仕様を得意げにーっていうのは
> 因みにCSVはRFCで「内部改行はCRLF」と定まっているので
↑こいつのことですかな?w
まあ、RFCでCRLFと決まってないんですがw

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

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

387:名無しさん@お腹いっぱい。
18/06/10 16:39:21.31 .net
1データの中に改行が含まれてる
そのままだとデータ区切りの改行と見分けがつかない
CSV形式の話はしていない
\nにエスケープする方法では、1データずつ処理しなければならず
外部コマンド呼び出しの必要があるから遅い
ここまでは理解できてんのかなー?

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

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

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

391:名無しさん@お腹いっぱい。
18/06/10 16:43:16.71 .net
>>376
だったら何を言いたいのかさっぱり。単に絡みたいだけか

392:名無しさん@お腹いっぱい。
18/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:名無しさん@お腹いっぱい。
18/06/10 16:50:13.04 .net
何を言っているのだか。最初からCSV形式のデータ扱う話なんかしてないって言っておきながら、前レスではCVSのこと「だけ」のレスなことだから、そのCVSのことだけのことを何を言いたいのかだよ
すでに書いたが、
データ | フィルタ | シェルスクリプト(関数なり) | フィルタ > データ
でしかない。CVSはどうフィルタを書く上では具体的にそれしかでしかないからだけだな
てか、その設問がそんなにきになるならお前が答えろよっw

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

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

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

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

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

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

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だと決めつけることはできない


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