16/11/17 08:49:14.72 .net
>>798
訂正
ウェブブラウザで表示すると余分なセミコロンが混じってしまう
test "$( curl -I -s -o /dev/null -w '%{http_code}' URLリンク(www.google.co.jp) )" = 200
814:名無しさん@お腹いっぱい。
16/11/17 12:19:57.15 .net
>>521
いいお(´・ω・`)
815:名無しさん@お腹いっぱい。
16/11/17 12:21:26.17 .net
うちのcurlは終了しなかった
-XHEAD を外してみた
-bash: test: too many argumentsになった
$()を""で括った
awkが効いてなさそう
NR==1 にした
まだ一致しない
行末がCRLFだった
$'\r'を付けた
とりあえず
test $(curl -XHEAD -s -i URLリンク(www.google.co.jp)<) | awk NR==1)" = 'HTTP/1.1 200 OK'$'\r';echo $?
なった
816:名無しさん@お腹いっぱい。
16/11/17 12:47:25.00 .net
つまり纏めるとこうか
test "$(curl -I -w "%{http_code}" URLリンク(example.com) 2>&- |tail -1)" = 200; echo $?
817:名無しさん@お腹いっぱい。
16/11/17 14:56:39.30 .net
なんでレスポンスを取得する操作と
取得したレスポンスをtestする操作を一度にしようとするのか理解不能
818:名無しさん@お腹いっぱい。
16/11/17 16:51:11.77 .net
ワンライナー原理教の方ですかね?w
まあ何でも一度にやってみたくなる衝動は理解できなくもない。
そこに山があるから、的な何か。
819:名無しさん@お腹いっぱい。
16/11/17 17:02:47.58 .net
そこにパイプがあるからな
820:名無しさん@お腹いっぱい。
16/12/07 08:00:32.91 .net
品位が問われるAdvent Calendar -- シェルスクリプトはどこでも動く!
URLリンク(www.peeep.us)
なんかあの界隈よく揉めてるな… 👀
Rock54: Caution(BBR-MD5:f4da0c707200fe35c49b788174082785)
821:名無しさん@お腹いっぱい。
16/12/07 09:27:19.82 .net
品位のないやつだな
822:名無しさん@お腹いっぱい。
16/12/07 10:58:10.89 .net
qiitaとかに書いちゃう輩なんてそんなもんだろ
823:名無しさん@お腹いっぱい。
16/12/07 12:13:29.28 .net
この記事がキモいのは認めるけど、十把一絡げにQiitaを悪く言うのはやめて!
とはいうもののオタクのコミュニティって、どこでもちんぽ騎士団ぽいのがいるよね……
ぼっち最高やで。
824:名無しさん@お腹いっぱい。
16/12/07 15:49:11.13 .net
シェルスクリプトで、if
825:とthenの間に改行がある場合で、その間に#をつけたコメント行を入れるのはNGですか? ifの条件を、動作テストのため、いくつか使い分けたくて、thenより上の行で、テストで使い終わった判定を コメント化しました。実際の判定が、コメント化したものが活かされたりと、おかしくなりました。 以下の、1分ごとに呼び出されるコードで、毎時40分だけ動いて貰いたいのに、10分おきに条件成立となりました。 #1hour if [ `date '+%M'` -eq "40" ] #10min # if [ `date '+%M' | tail -c 2` -eq 0 ] #all # if [ true ] then echo 処理 fi
826:名無しさん@お腹いっぱい。
16/12/07 16:18:47.23 .net
>>809
あそこで役に立つ記事あるか?
自己満のゴミ情報が大部分だからgoogole personal blockの対象だわ
827:名無しさん@お腹いっぱい。
16/12/07 16:49:19.73 .net
>>810 テストの大括弧の後ろにセミコロン付ければいいんでね?
828:名無しさん@お腹いっぱい。
16/12/07 18:34:13.86 v2ZV9RF7w
bash3.2+ で IFS=$' \t\n' な状態で
$ echo "foo bar" baz | hoge.bash
とした時に hoge.bash 内で "foo bar" と baz を
別々の引数として取得するにはどうすればいいですか?
829:名無しさん@お腹いっぱい。
16/12/07 19:49:58.99 .net
>>811
わかる。盛大な勘違い書いててドャァしてる感がすごい
830:名無しさん@お腹いっぱい。
16/12/07 21:31:23.08 .net
googoleとかのことか
831:名無しさん@お腹いっぱい。
16/12/07 23:23:03.71 .net
>>810
素直にcrontab使った方が良いんじゃね
832:名無しさん@お腹いっぱい。
16/12/08 09:58:48.36 .net
>>810
そんなこと起きないはず
ほんとにそのコード?
833:名無しさん@お腹いっぱい。
16/12/10 20:22:24.90 .net
すいません、教えて下さい。
色んなネットーワーク機器のログをsedでズバッとマスキングかけたいんだけど、URLと、IPアドレスの正規表現を教えて下さい。
834:名無しさん@お腹いっぱい。
16/12/10 20:25:17.66 .net
817d
835:名無しさん@お腹いっぱい。
16/12/14 16:17:30.58 .net
TBS
det dritte folkemn
836:名無しさん@お腹いっぱい。
16/12/21 04:35:52.23 .net
文字列から実行して、返り値も標準出力も格納したいんだけど
testCmd="なんかのコマンド"
result=$(eval testCmd)
この後の$0はevalの返り値なのかtestCmdの帰りなのかよくわからんのですが
837:名無しさん@お腹いっぱい。
16/12/21 05:11:40.55 .net
>>821
$0 ってどういうこと?
$? の間違いなら man bash の eval に書いてある。
838:名無しさん@お腹いっぱい。
16/12/21 06:35:22.65 .net
普通に考えるなら
export testCmd="コマンド"
$testCmd > ログファイル
戻り値=$?
839:名無しさん@お腹いっぱい。
16/12/21 06:47:35.19 .net
ちなみにスクリプトにすると
result=`$testCmd`
で標準出力が入って
$?でも戻り値は取れるけど
標準エラー出力は取れないね
840:名無しさん@お腹いっぱい。
16/12/21 11:34:52.01 .net
失礼いたしました$?ですね
testCmd="なんかのコマンド"
result=$(eval $testCmd)
returncode=$?
標準エラーはいらんのですが
プロセス置換?とかでできるのかな
841:名無しさん@お腹いっぱい。
16/12/22 09:27:10.08 .net
いまいち何を訊きたいのか分からん。
$?はevalの終了ステータスが設定される。evalの終了ステータスはtestCmdの終了ステータスが設定される
842:名無しさん@お腹いっぱい。
16/12/22 12:40:53.01 .net
> この後の$0はevalの返り値なのかtestCmdの帰りなのかよくわからんのですが
マニュアル読んでわかんなきゃ試してどうなるか調べないと
正常終了するコマンドだけじゃなくてそれ以外もね
843:名無しさん@お腹いっぱい。
17/01/15 17:41:24.20 .net
[ .... ] を [[ .... ]]に単純に置き換えて問題あります
でしょうか?
844:名無しさん@お腹いっぱい。
17/01/15 18:20:34.24 .net
コマンドの引数を変数化したときって、どうやってその変数をコマンドに渡せばいいの?
#!/bin/bash
opts=“-f $file”
hoge $opts
これだと hogeコマンドが unrecognized option エラーになってしまう。
初歩的な質問ですまん
845:828
17/01/15 18:27:02.19 .net
スマソ、自己解決
$fileが不正だっただけやん
846:名無しさん@お腹いっぱい。
17/01/16 21:28:07.13 .net
>>828
URLリンク(mywiki.wooledge.org)
> [[ is not defined by POSIX, originated in ksh and is also present in zsh
847:名無しさん@お腹いっぱい。
17/01/17 21:34:40.69 .net
bashでif使って変数に"ok"が入ってるかはどうやって確かめればいいんでしょうか?
if [ $a = "ok" ]; then
echo hoge
else
echo fuga
fi
の様にしているのですが"ok"が入っていても別の文字列が入っていてもfugaが出力されてしまいます
848:名無しさん@お腹いっぱい。
17/01/17 21:59:37.47 .net
$a の中身が引用符の無い裸の
ok
ならば真になるはず
849:名無しさん@お腹いっぱい。
17/01/17 22:02:25.13 .net
できればそのままやりたいんです
cutかなんかで事前に削るしかないですかね?
850:名無しさん@お腹いっぱい。
17/01/17 22:14:16.11 .net
831 の "ok" を '"ok"' または "\"ok\"" にすれば
851:名無しさん@お腹いっぱい。
17/01/18 09:13:18.95 .net
引用符付きの文字列なの?
852:名無しさん@お腹いっぱい。
17/01/18 11:40:24.29 .net
>>835
\"でうまく行きました
ありがとうございます
>>836
そうです
"ok"か"error"、またはそれ以外の文字列(引用符なし)が入ってる
853:名無しさん@お腹いっぱい。
17/01/21 12:38:14.00 .net
使ってないと何もかも忘れる・・
854:名無しさん@お腹いっぱい。
17/01/21 16:06:57.66 .net
忘れるで思い出した、シェルスクリプトと関係ないけどinfoでいつも迷子になるわ俺
855:.
17/01/21 20:26:15.12 .net
これってどうかな?
URLリンク(gihyo.jp)
856:名無しさん@お腹いっぱい。
17/01/21 21:16:52.05 .net
configure全部読めば桶
857:名無しさん@お腹いっぱい。
17/01/23 23:25:46.35 .net
httpdのログでIP直でアクセスして来たIPをbanするスクリプト作ってcronで回すようにした
858:名無しさん@お腹いっぱい。
17/01/23 23:40:12.97 .net
接続しに来た全IPをBAN判定する負荷のほうが高くなりそうだね
859:名無しさん@お腹いっぱい。
17/01/23 23:46:44.50 .net
blockはpfでやってるけど、負荷があるのかわからない。たいして無いように思う。前は中国IPを全部はじいてたけど、特に不都合はなかった
860:名無しさん@お腹いっぱい。
17/02/05 17:07:27.34 .net
ビギナーなんですが、教えてくれませんか。
for i in {1..3}
do
echo $i
done
で
1
2
3
ではなく{1..3}が出力されます。どうして?
861:名無しさん@お腹いっぱい。
17/02/05 17:13:16.91 .net
bash じゃないから
862:名無しさん@お腹いっぱい。
17/02/05 17:15:56.58 .net
>>846
ありがとう・・・ありがとう・・・
863:名無しさん@お腹いっぱい。
17/02/05 19:26:02.43 .net
もう一個お願いします。
testを
1
2
3
というファイルだとして、
cat test|while read line; do sed -e "s/.*/a/"; done
をやると
a
a
a
ではなく
a
a
となるのはなぜですか?
864:名無しさん@お腹いっぱい。
17/02/05 20:04:29.97 .net
ホントは、
cat test|while read line; do echo "$line" | sed -e 's/.*/a/'; done
ってしたいんじゃない?
cat test|while read line; do sed -e "s/.*/a/"; done
だと、1行目を read が喰って、2行目以降は全て sed に入力される
ことになるよ。
865:名無しさん@お腹いっぱい。
17/02/05 20:26:43.25 .net
>>849
ありがとう・・・。そういう仕組みになってるのは知らなかった。
866:名無しさん@お腹いっぱい。
17/02/08 13:58:57.76 .net
list.txt に書いてあるファイルを一括で転送するスクリプトを書いたのですが、
これに送信前と送信後のmd5を比較して、一致しなかったら再送させるにはどうすればいいですか?
URLリンク(pastebin.com)
867:名無しさん@お腹いっぱい。
17/02/08 23:14:15.74 .net
一度 mvしてしまったものは再送出来ない
868:名無しさん@お腹いっぱい。
17/02/09 12:54:00.09 .net
こういうファイルを重複箇所は2度目に出現する箇所のみ削ってマージする方法ってある?
$ cat file1.txt
1
2
3
4
$ cat file2.txt
3
4
5
5
6
センスない自分�
869:ニしてはheadとtailを使って逐一チェックしながら マージすると言うプログラミング的な方法しか思いつかなかった・・・
870:名無しさん@お腹いっぱい。
17/02/09 13:09:23.15 .net
cat file1.txt file2.txt | sort -nu
あくまでも中には数字しかないならばの話で。
871:名無しさん@お腹いっぱい。
17/02/09 13:17:38.41 .net
連結してsortしてuniqじゃダメなの?
872:名無しさん@お腹いっぱい。
17/02/09 13:35:43.26 .net
>>854-855
ありがとうございます
数字を使ったのは単なるサンプルなので・・・実際は文字列が入っています
今はcatで単純マージしたあとにviで重複箇所を削っていて
かつそのファイルを利用する時にsortしてuniqしています
できればファイルサイズとかも気にしたいので
パイプとかで簡単かつ堅実に出来ないかなと思ったのです
873:名無しさん@お腹いっぱい。
17/02/09 13:40:12.55 .net
すでにソートされてるんならuniqだけでいいんじゃね
そうじゃないんなら、ありうる最大限一般的な例を出さないのがだめ
874:名無しさん@お腹いっぱい。
17/02/09 16:02:59.69 .net
awk 使うとか
$ cat file1.txt file2.txt | awk '{if(!u[$0]){u[$0]=1;print;}}'
875:名無しさん@お腹いっぱい。
17/02/09 19:01:56.53 .net
URLリンク(www.youtube.com)
876:名無しさん@お腹いっぱい。
17/02/09 19:13:20.28 .net
2次元座標をy座標 -> x座標の順でソートしたいんだけど
ソートキーの値がある範囲内(例えばプラスマイナス100)にある場合は同じ値とみなすみたいなことできますか?
入力イメージ
0001 31 149
0002 21 156
0003 11 145
0004 52 344
0005 42 356
0005 12 353
0006 53 594
0007 13 613
出力イメージ
0003 11 145
0002 21 156
0001 31 149
0005 12 353
0005 42 356
0004 52 344
0007 13 613
0006 53 594
比較ロジック(0はa=b、-1はa<b, 1はa>b)
function compare (a, b) {
if (a.y < b.y - 100) return -1
if (a.y > b.y + 100) return 1
if (a.x < b.x - 100) return -1
if (a.x > b.x + 100) return 1
return 0
}
877:名無しさん@お腹いっぱい。
17/02/09 19:14:30.15 .net
>>860
入力イメージは(id, x, y)で
3カラム目がy座標、2カラム目がx座標です
878:名無しさん@お腹いっぱい。
17/02/09 19:50:30.95 .net
区間に分けていいんなら、100単位で丸めたキーを追加してソートすればいいけど、
その比較関数をきっちり実装するのは無理があるね
awkかそれ以上のスクリプト言語使うくらいかな
879:名無しさん@お腹いっぱい。
17/02/09 20:07:21.71 .net
プラマイ100とかだと全部同じ値になるんじゃないの?
四捨五入で丸めるなら分かるけど
880:名無しさん@お腹いっぱい。
17/02/09 21:01:26.79 .net
pythonのsortはstableだと保証されてるけど、他のは?
881:859
17/02/09 21:46:47.59 .net
>>862
>>863
入力イメージの値にあるみたいに丸めだと欲しい結果が得られないのでスクリプト言語使ってみます
ありがとうございます
>>864
stableかどうかはあんまり考えてませんでした
1カラム目のユニークな値でソート済みなところからの処理なので
stableじゃないsortの場合は比較ロジックに1カラム目を追加して対応します
882:名無しさん@お腹いっぱい。
17/02/09 22:44:27.46 .net
んー、500=560で、560=620だけど、500<620って、ソート誤らんかな
883:名無しさん@お腹いっぱい。
17/02/09 23:31:32.77 .net
>>865
このスレで言うべきでは無い気はするけど
Excelとかの表計算ソフトを使った方が良さそうな気が
884:859
17/02/10 00:45:19.33 .net
>>866
ユニークなキーも比較条件に追加すれば並び順は一意に決まるので誤ることはないかと
>>867
シェルスクリプトでいろいろ処理する途中の処理なんです
885:名無しさん@お腹いっぱい。
17/02/10 01:36:54.52 .net
>>868
qsortを仮定して、たまたまピボットが560になったときと
620になったときで結果が変わるよ
誤るというか、結果が一意で
886:ない
887:名無しさん@お腹いっぱい。
17/02/10 02:16:12.75 .net
1カラム目がユニークキーだとしてそれも比較条件に入れれば
各行の比較で必ず上下関係が明確になるのでqsortでも大丈夫じゃないでしょうか
001 620
002 560
003 500
888:名無しさん@お腹いっぱい。
17/02/10 05:48:37.28 .net
シェルでも他言語でもプログラミングが必要で
ループ処理しながら選択ソートするしかないね
まあまずシェルで~とかじゃなくて
ExcelでもJavaでも何でもいいから簡単に実装できる方法を調べてみて
シェルに落としこめるかを調べた方がいいと思う
例えば偏差とか一般的で誰でも使うから統計処理なんてawkで楽に出来るんだけど
>>860がやりたいのって特殊だから独自実装が必要になると思うよ
茶化してるわけじゃないけど
はじめに自分がやりたいことは何なんでしょうって聞くのが早いと思う
889:名無しさん@お腹いっぱい。
17/02/10 06:15:23.45 .net
数学詳しくないけど
前後のデータの単純比較じゃなくて
全データとの比較が必要になるから
コマンド1発じゃ無理だね(10発くらいでも無理だけど)
キーを追加するにしてもデータ数-1分のキーが必要になるし(xとyでさらに2倍か)
キーが別だからそこからソートする方法が浮かばない
スクリプトでもプログラムでもいいけど
プラマイ100を同値とするソートのロジック組むしかないと思う
890:名無しさん@お腹いっぱい。
17/02/10 08:25:47.98 .net
>>870
qsortの中身知ってる?
パーティショニングしたらあとはブロック内の入れ替えしかしないよ
891:名無しさん@お腹いっぱい。
17/02/10 08:29:02.88 .net
>>872
データ数-1とか2倍とか意味わからん
892:名無しさん@お腹いっぱい。
17/02/10 09:53:38.19 .net
>>868
並び順は良いだろうけど
A=B B=C A≠C の時そもそもどうなれば良いの?
001 A
001 B
??? C
893:名無しさん@お腹いっぱい。
17/02/10 10:06:02.58 .net
ソートっていうのは同値類とその間の全順序を決めて要素を並べることだよね
>>860のcompareだと推移律を満たさないので同値類になっていない
だからおかしなことになる
894:名無しさん@お腹いっぱい。
17/02/10 10:15:12.36 .net
このように複雑になる場合は要求定義が不適切な事が多い
895:名無しさん@お腹いっぱい。
17/02/10 10:16:20.47 .net
普通に全部出せよ
何で小出しにしてんだよアホじゃねえよ
896:名無しさん@お腹いっぱい。
17/02/10 10:35:17.25 .net
複雑って言うか単純なんだけど特殊なだけでしょ
897:名無しさん@お腹いっぱい。
17/02/10 10:52:33.90 .net
こんなアホソート誰が必要とするんだよwww
ソート前
001 200 200
002 100 100
003 0 0
ソート後
003 0 0 ←一番小さく200との差が100を超えているため入れ替える
001 200 200 ←一番大きいが100からは100以内なので入れ替えない
002 100 100 ←200より小さいが200からは100以内なので入れ替えない
アホだw
コレ意味の分かってないやつがロジック組むと
100から見たら0も200もプラマイ100以内だから
並べ替えしないとか言うことになるだろう
要するにプラマイ100を見込んだ最小値を求めて
2週目のループでそれを除外した中からさらに最小値を求めていくだけ
終わりまで選択ソートをやるだけなんだけど
そこにプラマイ100の比較を追加する必要がある
ぶっちゃけソート結果を見れば分かるように
こいつソートしてんの?って思うだろう
そもそも>>874の考えが破綻していると言うか思いつきソートなんだろうと思う
統計とか学んだ方がいいかな~
898:名無しさん@お腹いっぱい。
17/02/10 10:59:36.91 .net
ぶっちゃけプログラムを書くのは簡単
899:名無しさん@お腹いっぱい。
17/02/10 11:04:25.90 .net
特殊じゃなくて曖昧なんでしょ
早い話、1000x1000の平面のすべての整数座標に点があったらどうソートしたいわけ?
2次元だからややこしいわけでなく1次元でも同じこと
900:873
17/02/10 11:07:21.05 .net
>>880
俺になんの用?
901:名無しさん@お腹いっぱい。
17/02/10 11:15:25.85 .net
>>883
ごめん間違えた>>860だ
>>882
いや曖昧じゃない
2次元と言うのもちょっと複雑にしてるだけだろう
プラマイ100以内は同じと言う明確な基準がある
ただたぶんこのソートの結果は>>880に記したように
初期のデータの並びによって変わる部分があると思うね
だからこのソートは>>860の思いつきソートだってことだ
902:名無しさん@お腹いっぱい。
17/02/10 11:38:39.44 .net
多分、縦横10000くらいある座標にポツポツしかないと予想した処理なんだろうよ
903:名無しさん@お腹いっぱい。
17/02/10 14:05:33.33 .net
>>884
(0, 100)
(99, 300)
(198, 200)
どう並べりゃ良いのよ?
904:名無しさん@お腹いっぱい。
17/02/10 14:12:56.80 .net
>>886
(0, 202)
(99, 101)
(198, 0)
こうか
905:873
17/02/10 14:39:27.08 .net
(0,999)
(0,998)
...
(0,1)
(0,0)
どう並べる?
906:名無しさん@お腹いっぱい。
17/02/10 15:26:37.64 .net
cygwinでスクリプト書いてて時々
bar=`ls foo_*.txt|tail -1|cut -d\. -f1`
で$barに高確率で何も入らなかったり(foo_*.txtはあるのに)
bar=`echo $foo|perl -pE 's/^.*"hoge":"([^"]+)".*$/HOGE_\1/'`
echo $bar > /dev/null
echo "result:"$bar
の2行目がないと何故か3行目で$barが空のように表示されたり
というような現象が起きるんだけど、これってよくあること?
cygwin64にしてから起きているような気もする
907:名無しさん@お腹いっぱい。
17/02/10 15:56:58.38 .net
.
.
東京都三鷹市 元ニコ生主の莉里子です (整形後) URLリンク(i.imgur.com) (整形前) URLリンク(i.imgur.com)
不倫・浮気・密会・不道徳な行為は著名な小説家でしている人がいるので真似しちゃう池沼です URLリンク(i.imgur.com)
■2015年2月 釣りニコ生主コジコジと沖縄旅行でオフパコ
2015年2月2日-3日...釣り生主コジコジと沖縄旅行でセックス/やり捨てされ逆ギレ
2015年2月4日.........莉里子の父親から電話があって脅されたとコジコジに放送で暴露される
2015年2月6日.........リスカ画像UP
2015年2月9日.........ツイ全消し/コミュ爆破逃亡
URLリンク(imgur.com)
■2016年6月 バンドマン兼ニコ生ツイキャス配信者と密会 その3日後に穴るセックス~継続中
URLリンク(imgur.com)
●早川莉里子●土井莉里子●土井寧々●土井剛●早川剛●星崎●りりこ●りりこし●にゃんぱす
●ね子●にゃこ●みんち●めう●ねね●猫又●剛
※名古屋ゲイ風俗ホストとも体の関係※
908:名無しさん@お腹いっぱい。
17/02/10 15:57:21.03 .net
.
.
莉里子(本人公表)1994年3月7日 or 1996年4月25日 URLリンク(imgur.com)
生主時代(にゃんぱす、りりこし、莉里子)
剛 URLリンク(i.imgur.com) URLリンク(imgur.com)
東京都三鷹市 シティハイツ吉祥寺通り
URLリンク(i.imgur.com)
URLリンク(i.imgur.com)
URLリンク(i.imgur.com)
URLリンク(imgur.com) (見せたがり乱交好きのメンヘラ) URLリンク(i.imgur.com)
URLリンク(i.imgur.com)
URLリンク(i.imgur.com)
URLリンク(i.imgur.com)
URLリンク(i.imgur.com)
莉里子 緊縛ハメ撮り師 『相馬ドリルrenji』 とラブホに2人で入って フルヌード緊縛ハメ撮り
URLリンク(pbs.twimg.com) URLリンク(i.imgur.com)
URLリンク(twitter.com)
URLリンク(imgur.com)
URLリンク(i.imgur.com)
909:名無しさん@お腹いっぱい。
17/02/10 15:57:31.97 .net
.
.
.
>悪質パクツイ垢(自称ハッカー)のコピーライティング特定されててワロた
@copy__writing の中の人は東京都三鷹市の莉里子
URLリンク(twitter.com)
URLリンク(i.imgur.com)
URLリンク(i.imgur.com)
URLリンク(i.imgur.com)
URLリンク(www.mercari.com)
910:名無しさん@お腹いっぱい。
17/02/10 15:58:37.98 .net
■莉里子プライベート垢
@riricoco0
@bibliophilia333
@muzimuzi333
@nekomatagensou
@hanasoraumimori
@mirainosekai3
@zibanyan666
@parlorchild
@liliririko
@EriotN
@mike_peko
@riricoco0
@ririko_neko
@nyanpas ※1
@telegraphyneko
@riricatputi (新アカ) URLリンク(imgur.com)
911:名無しさん@お腹いっぱい。
17/02/10 22:49:49.54 .net
>>889
再現性はあるの?
手で実行してるのか知らないけど
lsの結果をファイルにリダイレクトしといて(ログ残しておいて)
地道に調べるしかないと思う
912:名無しさん@お腹いっぱい。
17/02/14 09:44:10.27 .net
SJISで漢字を含むCSVファイルを入力として、
while read line
do
なんちゃら
done < CSV
みたいに一行ずつ読み込んでなんちゃらすると、特定の漢字をreadで取った時に文字化けするんだが
これの回避策って兄貴何かないかな
とりあえずIFSを改行のみにしてfor line in `cat CSV`にして凌いだが、IFSいじるのが気持ち悪くて仕方がない
913:名無しさん@お腹いっぱい。
17/02/14 10:11:22.08 .net
なんの漢字?
914:名無しさん@お腹いっぱい。
17/02/14 10:13:38.18 .net
SJISなんてウンコを触っておきながらIFS弄るのが気持ち悪いというのは矛盾
915:名無しさん@お腹いっぱい。
17/02/14 10:35:53.64 .net
>>895
0x5C を含む漢字でしょ、「表」とか
だったら read -r line で
916:名無しさん@お腹いっぱい。
17/02/14 10:44:50.39 .net
>>898
KOREDAAAAA!!!
ありがとう兄貴
ちなみに構造って感じでつまづいてた
SJIS扱うのは古いプロジェクトならよくあることよ
917:名無しさん@お腹いっぱい。
17/02/14 10:54:10.92 .net
そうか2バイト文字の1バイトが¥なせいでエスケープ扱いしちゃってたのな…
UTF8とかだと回避出来るんかなこれは
918:名無しさん@お腹いっぱい。
17/02/14 11:54:23.78 .net
んなもん当たり前だろ、としか思えない私はおっさん確定。SJIS死すべしと思っていたのは25年前くらい?
これが世代というものなんですね……
919:894
17/02/14 13:40:31.07 .net
25年前からプログラマやってる人と並んだらさすがに俺はクソガキだわ
にしても意外なほどググっても出ないな、それほどマイナーなのかこの症状
もしくは当たり前すぎるのか
920:名無しさん@お腹いっぱい。
17/02/14 15:20:01.03 .net
>>902
sjis ダメ文字でググればごろごろと
921:894
17/02/14 15:23:50.72 .net
>>903
sh read 漢字 文字化け とかで出てほしかった…
勉強なったわサンクス
922:名無しさん@お腹いっぱい。
17/02/14 15:40:03.34 .net
sjis 文字化け でも出るで
もう少しやったな
923:894
17/02/14 16:05:30.25 .net
あー、出るには出るけど多分readとの関連に気づかなかったろうな…ダメ文字ってものをまず知らなかったし
特定の漢字が文字化けってあたりの記事から推察して、SJISがなんかマズイってとこにはたどり着いたかもしれんが、多分それでもread -rには気づかなかったと思うわ
iconv -t utf8してたと思う
924:名無しさん@お腹いっぱい。
17/02/14 17:11:17.24 .net
>>906
iconv を利用するのはアリだと思うよ。
業務系のシェルスクリプトでも「SJIS データを一時的に UTF-8 にコンバートして何らかの処理をした後に SJIS に戻す」という手法で実装することがある。
925:894
17/02/14 17:17:09.33 .net
>>907
便利だよねiconv
926:名無しさん@お腹いっぱい。
17/02/14 20:50:41.08 .net
おれは、使い慣れてるnkfでcp932→utf-8に変換してから作業してるわ。
927:名無しさん@お腹いっぱい。
17/02/15 01:22:16.71 .net
そんで戻ってこない文字が出てきて泣きそうになるまでがテンプレだね。
928:名無しさん@お腹いっぱい。
17/02/15 01:34:33.21 .net
それでもiconvなら
iconvならきっとなんとかしてくれる
929:名無しさん@お腹いっぱい。
17/02/15 04:53:01.40 .net
元がcp932なら変換不能になることはないだろう
そう、iconvならね
930:名無しさん@お腹いっぱい。
17/02/18 04:37:58.77 .net
#!/bin/bash
echo A > test.txt ; echo B >> test.txt
ARRAY=$(cat test.txt)
for item in ${ARRAY[@]}; do
echo $item
done
としたら
A
B
と表示されるので、$ARRAYは 2個の要素を持つ配列になったのだと思っていました。
ところが要素数を
echo ${#ARRAY[@]}
で表示させたら 1 が表示されます。
$ARRAYは配列になっていないのでしょうか?
だとすると、なぜ for item … で表示されたのか?
931:名無しさん@お腹いっぱい。
17/02/18 04:55:39.09 .net
indexも表示させればわかるよ
echo A > test.txt; echo B >> test.txt
ARRAY=$(cat /tmp/test.txt)
for (( i=0; i<${#ARRAY[@]}; i++ )) do
printf "ARRAY index:%d value:%s\n" "$i" "${ARRAY[i]}"
done
readarray -t ARRAY2 < <(cat /tmp/test.txt)
for (( i=0; i<${#ARRAY2[@]}; i++ )) do
printf "ARRAY2 index:%d value:%s\n" "$i" "${ARRAY2[i]}"
done
932:名無しさん@お腹いっぱい。
17/02/18 05:52:55.03 .net
>>914
readarray -t ARRAY < <(cat test.txt)
で綺麗に配列として読まれますね。
これでいま作っている自作ツールが完成出来ます。
ありがとうございます
933:名無しさん@お腹いっぱい。
17/02/18 09:43:20.54 .net
最初の例のやつ、多分配列になってないんじゃないか
934:名無しさん@お腹いっぱい。
17/02/18 14:18:47.86 .net
>>916
#!/bin/bash
echo A > test.txt ; echo B >> test.txt
ARRAY=$(cat test.txt)
N=1
for item in ${ARRAY[@]}; do
echo ARRAY[$N]=$item
N=$(($N + 1))
done
としたら
ARRAY[1]=A
ARRAY[2]=B
と表示されて、配列になっているようです
935:名無しさん@お腹いっぱい。
17/02/18 16:02:36.82 .net
>>917
それは配列になってるんじゃなくてforループで一つ目の要素がsplitされてるだけ
echo A > test.txt ; echo B C >> test.txt みたいにスペースなんかが入ると対処できないからそういうコードはやめたほうがいい
for item in "${ARRAY[@]}"; do ってクウォートすると結果変わるでしょ?
あと”<(cat test.txt)”は比較のために書いただけでcatしなくても大丈夫
readarray -t ARRAY < test.txt
while readするかreadarray(=mapfile)使うか
URLリンク(mywiki.wooledge.org)
936:名無しさん@お腹いっぱい。
17/02/18 17:07:28.86 .net
>>918
> それは配列になってるんじゃなくてforループで一つ目の要素がsplitされてるだけ
> for item in "${ARRAY[@]}"; do ってクウォートすると結果変わるでしょ?
なるほど。
配列になっていないのと、検証の方法が間違っていたことがよく理解出来ました。
> echo A > test.txt ; echo B C >> test.txt みたいにスペースなんかが入ると対処できないからそういうコードはやめたほうがいい
気を付けます。
> あと”<(cat test.txt)”は比較のために書いただけでcatしなくても大丈夫
> readarray -t ARRAY < test.txt
> while readするかreadarray(=mapfile)使うか
> URLリンク(mywiki.wooledge.org)
ありがとうございます。
もっと勉強します
937:名無しさん@お腹いっぱい。
17/02/20 13:16:49.47 .net
>>919
[user@f25 ~]$ ARRAY=$(cat test.txt)
[user@f25 ~]$ declare -p ARRAY
declare -- ARRAY="A
B"
[user@f25 ~]$ readarray -t ARRAY < test.txt
[user@f25 ~]$ declare -p ARRAY
declare -a ARRAY='([0]="A" [1]="B")'
938:名無しさん@お腹いっぱい。
17/02/20 18:00:26.41 .net
>>920
declare -p !!!
知らなんだ
939:名無しさん@お腹いっぱい。
17/02/20 18:11:16.14 .net
このスレ来ると度々便利な知識得られるからいいわ
grep -oとか
940:名無しさん@お腹いっぱい。
17/02/21 05:20:06.32 .net
配列にするなら
ARRAY=( $(cat test.txt) )
941:名無しさん@お腹いっぱい。
17/02/21 16:45:06.28 .net
>>923
echo A > test.txt ; echo B C >> test.txt みたいにスペースなんかが入ると…
942:名無しさん@お腹いっぱい。
17/02/21 19:03:20.01 .net
IFS=$'\n'
ARRAY=( $(cat test.txt) )
declare -p ARRAY
とすれば空白混じりの行も1行として扱われるが、
空行(何も文字が無い行)は$ARRAYに読み込まれない
readarray -t ARRAY < test.txt
declare -p ARRAY
だと空行も読み込んでくれる
943:名無しさん@お腹いっぱい。
17/02/28 23:57:54.64 .net
echo test | grep a
みたいな時に終了コードはgrepこの場合1
でかつ標準出力にはtestが出ていて欲しいのですが
どうしたらいいでしょうか?
環境はbashです
944:名無しさん@お腹いっぱい。
17/03/01 00:40:42.45 .net
echo test | tee /dev/tty | grep a
でどうだろう?
945:名無しさん@お腹いっぱい。
17/03/01 00:57:07.01 .net
終了コード1のときにはその文字列を表示したいとかによって違う気がする。
常に入力をそのまま出力していいのだろうか。
946:名無しさん@お腹いっぱい。
17/03/01 01:36:33.88 .net
仕様を細かく詰めてない気がするけど とりあえず
echo test | ( grep -v a; exit $(expr \( "$?" + 1 \) % 2 ))
947:名無しさん@お腹いっぱい。
17/03/01 02:35:11.20 .net
みなさん、ありがとうございます
echo の部分は常に表示、grepは結果のみ欲しいので-qで、判定につかうインプットは常に全量表示して、結果はリターンコード、標準出力は人が見るよう、リターコードはその後のシステム的な分岐につかう的な目的です(後続はbashの世界でないのでワンライナーが嬉しい)
948:名無しさん@お腹いっぱい。
17/03/01 05:09:32.29 .net
macのsipsコマンドについて質問しても大丈夫ですか?
例えば-zと-sを一緒に実行して--out でフォルダに書き出したいとして
どういうルールで並べて記述すればいいでしょうか?
sips -Z 200 * -s format jpeg --out Converted/
あれこれいじって、たまたまこれで動いたのですが
正しいのかわかりません。
よろしくお願いします。スレチだったらすいません。
949:名無しさん@お腹いっぱい。
17/03/01 09:20:45.49 .net
>>930
grep にこだわらくても良くて、GNU sed を使ってもいい場合:
$ echo test | sed '/a/!q1'
test
$ echo $?
1
950:名無しさん@お腹いっぱい。
17/03/01 09:22:21.87 .net
>>931
正しいけどスレチ
man見ろ
見られないんなら
URLリンク(developer.apple.com)
951:名無しさん@お腹いっぱい。
17/03/01 09:41:41.92 .net
要求満たしつつ個人的に好きなのは>>927
952:名無しさん@お腹いっぱい。
17/03/01 09:50:14.78 .net
「標準出力」じゃないから要求満たしてないんじゃない?
953:名無しさん@お腹いっぱい。
17/03/01 10:04:09.41 .net
>>931
そういえばこういうスレもあったり
【Macintosh】MacでUNIX【Terminal】
スレリンク(unix板)
mac板でよかった気もするけど
OS XをUnixとして使ってる人の為のスレ 18
スレリンク(mac板)
954:名無しさん@お腹いっぱい。
17/03/01 10:17:52.51 .net
>>932
あ、間違えた…こうしないと
$ echo test | sed -n 'p;/a/H;${x;/./q0;q1}'
955:名無しさん@お腹いっぱい。
17/03/01 12:19:32.48 .net
echo test | awk '/a/{x=1}//END{exit !x}'
956:名無しさん@お腹いっぱい。
17/03/01 17:16:16.75 .net
$ echo test | awk '/a/{x=1}{print}END{exit !x}'
じゃないの?
957:名無しさん@お腹いっぱい。
17/03/01 17:36:55.41 .net
$ echo test | grep -B10000 -A10000 a
958:名無しさん@お腹いっぱい。
17/03/01 17:38:08.89 .net
あああ、1行もマッチしないとダメだ
959:名無しさん@お腹いっぱい。
17/03/01 21:54:56.86 .net
>>933 >>936
スレチにもかかわらずありがとうございました!
960:名無しさん@お腹いっぱい。
17/03/04 09:13:31.42 .net
>>931
うちでもよく使うが、sips なんて他には無いからな
for i *.jpg; do sips -Z 200 $i -s format jpeg --out Converted/$i; done
ところでマカーな人はbash4入れてるんですかね。bash3なので、最近ココで出てくるreadarrayが使えない
961:名無しさん@お腹いっぱい。
17/03/04 09:17:20.48 .net
あー in が抜けてる
for i in *.jpg ; do な
962:名無しさん@お腹いっぱい。
17/03/04 10:32:40.92 .net
ImageMagickのconvertみたいなものか
963:名無しさん@お腹いっぱい。
17/03/04 18:32:17.60 .net
>>943
>ところでマカーな人はbash4入れてるんですかね。
Homebrewで入れてそっち使うようにしてる
964:名無しさん@お腹いっぱい。
17/03/07 19:02:41.56 .net
いつもシェルが使える環境ある?
自分は仕事ならcygwin(今は使ってない)、実機、仮想環境
プライベートならラズパイ、仮想環境かな
965:名無しさん@お腹いっぱい。
17/03/07 22:43:56.07 .net
Mac
966:名無しさん@お腹いっぱい。
17/03/07 23:30:24.96 .net
俺はスマホにzsh入れてるけど
967:名無しさん@お腹いっぱい。
17/03/08 01:50:34.93 .net
>>947
SL-Zaurus(SL-C860)を今だに現役で使っているよ
968:名無しさん@お腹いっぱい。
17/03/09 02:31:23.57 .net
そういうのって
ただ書けるだけじゃなくて動かせたり
実際にその機械で便利に使えたりするのですか?
969:名無しさん@お腹いっぱい。
17/03/09 17:50:34.83 .net
pythonの出力をシェルの変数にするにはどうやれできますか?
x=$( python test.py )
はダメでした
970:名無しさん@お腹いっぱい。
17/03/09 17:58:17.55 .net
$ cat test.py
print("Hello world!")
$ python test.py
Hello world!
$ x=$(python test.py)
$ echo $x
Hello world!
971:名無しさん@お腹いっぱい。
17/03/10 09:16:11.80 .net
あれ?そうだよなと思ったら、pythonの文字コードの扱いが変でした
シェルごめんよ
972:名無しさん@お腹いっぱい。
17/03/10 13:07:41.33 .net
pythonのせいにするのもどうかと
973:名無しさん@お腹いっぱい。
17/03/10 16:08:16.57 .net
pythonは文字コード周り落とし穴が多いすぎ
pythonのせい
974:名無しさん@お腹いっぱい。
17/03/11 22:32:29.75 .net
$@から$1を除いたものを関数に渡す方法を教えてくだしあ
975:名無しさん@お腹いっぱい。
17/03/11 22:46:42.79 .net
shiftするしかないんじゃないかな
呼出し後に元に戻したいとするとsetかな
976:名無しさん@お腹いっぱい。
17/03/11 23:06:24.73 .net
呼び出し先でshiftすりゃいいじゃん
977:名無しさん@お腹いっぱい。
17/03/12 00:12:25.14 .net
せやな!
978:名無しさん@お腹いっぱい。
17/03/12 01:47:16.95 .net
>>957
bash なら "${@:2}" でええんちゃう
979:名無しさん@お腹いっぱい。
17/03/12 04:14:35.39 .net
>>961
その発想もなかった
パラメータとして渡すならこっちの方が分かりやすいな
980:名無しさん@お腹いっぱい。
17/03/12 19:17:36.56 .net
ずっと、行の抜き出しはprcegrepを使ってたげど
sed -n -e '/hoge1/,/hoge2/p'
これでできるのを、今知って感動中。しかも、こっちの方が速い。
そのあとの置換は
sed -n -e '/hoge1/,/hoge2/p' | sed -e 's/foo/bar/g'
としかできなかったけど
sed -n -e '/hoge1/,/hoge2/p' -e 's/foo/bar/g'
で、やる方法とかであるんですか?
981:名無しさん@お腹いっぱい。
17/03/12 20:09:10.06 .net
sed -n -e 's/foo/bar/g' -e '/hoge1/,/hoge2/p'
じゃだめなの?
982:名無しさん@お腹いっぱい。
17/03/12 20:49:35.74 .net
sed -ne '/hoge1/,/hoge2/{s/foo/bar/g;p;}'
でもいけそう
983:名無しさん@お腹いっぱい。
17/03/13 15:22:55.40 .net
sedスレあるのに忘れられてそうw
984:名無しさん@お腹いっぱい。
17/03/13 17:19:42.05 .net
sed -e '/hoge1/,/hoge2/!d' -e 's/foo/bar/g'
985:名無しさん@お腹いっぱい。
17/03/13 19:49:20.42 .net
ありがとうございます
さらに速くなりました
一番最後の文字はコマンドというのを実感
986:名無しさん@お腹いっぱい。
17/03/13 20:38:32.02 .net
sedは-n使ったら負け
987:名無しさん@お腹いっぱい。
17/03/15 13:36:43.93 .net
なんで?
988:名無しさん@お腹いっぱい。
17/03/15 13:37:42.13 .net
うるさい!
俺が負けだって言ったら負けなんだよ
大人しく言う事聞け
989:名無しさん@お腹いっぱい。
17/03/15 13:43:38.36 .net
なんだそのダメな親みたいな言い分は
990:名無しさん@お腹いっぱい。
17/03/15 13:45:42.22 .net
むしろジャイアンかな
991:名無しさん@お腹いっぱい。
17/03/15 16:27:57.38 .net
pでプリントした行は元質問にもあるようにストリームを流れて行かない、
お漏らししたようなものだからね
992:名無しさん@お腹いっぱい。
17/03/15 18:03:51.07 .net
sed だと、後方参照の時にバックスラッシュでエスケープしまくることになるのがどうにも…
それで、いつの間にか perl を代わりに使うようになった。
993:名無しさん@お腹いっぱい。
17/03/15 19:02:59.32 .net
sedでできることをperlでやるのは微妙に悔しいw
994:名無しさん@お腹いっぱい。
17/03/15 20:28:01.98 .net
sed -e "s/微妙に/非常に/" >976
995:名無しさん@お腹いっぱい。
17/03/15 20:45:20.13 .net
入力なくね?
996:名無しさん@お腹いっぱい。
17/03/15 20:58:18.06 .net
考えすぎ
997:名無しさん@お腹いっぱい。
17/03/16 12:44:27.48 .net
>>978
sed -e "s/微妙に/非常に/" <975 >976
ってやって空のファイルを作ってしまったあの頃...
998:名無しさん@お腹いっぱい。
17/03/16 12:47:16.46 .net
分からんでもない
999:名無しさん@お腹いっぱい。
17/03/16 16:23:09.20 .net
最初に head/tail、grep、sort 辺りを処理の都合上先にやることが多いので、
sed の入力にはパイプを使うことが多いかな。
1000:名無しさん@お腹いっぱい。
17/03/16 22:48:37.43 .net
日本語下手かw
1001:名無しさん@お腹いっぱい。
17/03/18 22:25:35.75 .net
grepしてsedは素人
1002:名無しさん@お腹いっぱい。
17/03/18 23:27:17.30 .net
なんで?
1003:名無しさん@お腹いっぱい。
17/03/19 00:04:19.09 .net
sedだけでできるからかと
1004:名無しさん@お腹いっぱい。
17/03/19 00:24:39.59 .net
grepである程度簡単なワードで絞ってからのほうが、複雑な置換は早そうだけど
1005:名無しさん@お腹いっぱい。
17/03/19 00:57:36.33 .net
実験して見せられるまで性能に関する予想は信じない
1006:名無しさん@お腹いっぱい。
17/03/19 01:06:54.08 .net
まぁこじらせた人にてみればその手間は実に腹立つだろうな
1007:名無しさん@お腹いっぱい。
17/03/19 10:07:51.17 .net
「ひとつのことを上手くやる」から考えると、grep してから sed の方がマッチしてそう
1008:名無しさん@お腹いっぱい。
17/03/19 11:41:33.99 .net
windowsのdos窓は使えるけれど、grep、sed、awk、perlなどはなし。当然他のスクリプト言語もなし。
さらに、新たなソフトのインスコはできない。
まあ、notepadでソースの編集はできる。
Eドライブには多くのフォルダがあって、中にはjpegのえろ画像が1テラ分てんこ盛り
えろ画像だけを全部Dドライブにコピーしたい。
Eドライブのフォルダを見ると8階層ぐらいのフォルダもあって、とても手作業のコピペはムリ。
にゃんとか目的を達成する方法はないであろうか?!
各位のお知恵を拝借したい。
1009:名無しさん@お腹いっぱい。
17/03/19 13:00:13.49 .net
powershell でも使えばいいんじゃないかな
1010:名無しさん@お腹いっぱい。
17/03/19 14:12:15.82 .net
ここじゃなくてもっと他に聞くべき所があるだろうな
1011:名無しさん@お腹いっぱい。
17/03/19 20:18:27.47 .net
その環境的な制限がありつつ、エロ画像を扱うという状況が想像できないな
仕事でエロ画像を扱ってるか上司の個人環境とかかな
1012:名無しさん@お腹いっぱい。
17/03/19 20:31:39.22 .net
robocopyでコピーすれば良い
1013:名無しさん@お腹いっぱい。
17/03/19 20:55:37.07 .net
>>988
GNU grep + GNU awk の場合だけど、GNU awk単独よりも早いらしいぞ
URLリンク(papiro.hatenablog.jp)
1014:名無しさん@お腹いっぱい。
17/03/19 22:03:55.18 .net
ドライブを別のPCからアクセス可能にしたらいいのに
1015:名無しさん@お腹いっぱい。
17/03/19 23:09:48.69 .net
>>996
timeの使い方を知らないって事を自慢してどうしたいんだ?
1016:名無しさん@お腹いっぱい。
17/03/19 23:10:46.82 .net
エロ画像に寛容なUNIX板
1017:名無しさん@お腹いっぱい。
17/03/20 10:44:19.74 .net
>>994
昔社内から netnews が見れてたので perl でスクリプト組んでエロ画像落としまくってたのをふと思い出した
当時は普通にFDに移動して持ち帰ってたけど
1018:名無しさん@お腹いっぱい。
17/03/20 12:06:05.49 .net
俺にはもうFDってのがもうすごいわ
1019:過去ログ ★
[過去ログ]
■ このスレッドは過去ログ倉庫に格納されています