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


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

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



1 名前:名無しさん@お腹いっぱい。 mailto:sageteoff [2015/08/14(金) 23:42:01.51 .net]
シェルスクリプトの総合スレです。
□お約束
・特記なき場合はBourne Shell(/bin/sh)がデフォルトです。
 bash/zsh/ksh/ashなどに依存する場合は明示しましょう。
 Linuxユーザは/bin/shの正体がbashまたはdashなので特に注意。
 FreeBSDユーザは/bin/shの正体がashなので注意。
 v7 shに一番近くて、現役のshは、OpenSolaris由来のheirloom sh。
  src.illumos.org/source/xref/illumos-gate/usr/src/cmd/sh/
  heirloom.sourceforge.net/sh.html
・csh/tcshのシェルスクリプトは推奨されません。
 (理由は「csh-whynot」でググれ)
・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。
 manや参考リンクを見ましょう。
 aproposないしはman -kでそれらしい単語による簡単な検索もできます。
・シェルで使えるワイルドカード等は正規表現ではありません。
 正規表現の話題はスレ違い(正規表現スレへ)
・シェルスクリプトのことをシェルってゆーな
□初心者へのアドバイス:
・適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも
 awkまたはperlの方が適した処理にはそちらを使いましょう。
・知らないコマンドが出てきたらmanを引きましょう。
・思い通りに動かないときは、まずは sh -x でトレースしましょう。
□回答者への注意事項:
・シェルスクリプトでの処理方法を質問しているのに、よくわからずに
 「そういうのはperl使いましょう」と回答するのはやめましょう。
 安易にperlに逃げずにシェルスクリプトで処理するのが頭のいいやり方。
前スレ
シェルスクリプト総合 その24
peace.2ch.net/test/read.cgi/unix/1415634843/

868 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/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 名前:名無しさん@お腹いっぱい。 [2017/02/09(木) 13:09:23.15 .net]
cat file1.txt file2.txt | sort -nu
あくまでも中には数字しかないならばの話で。

871 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/09(木) 13:17:38.41 .net]
連結してsortしてuniqじゃダメなの?

872 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/09(木) 13:35:43.26 .net]
>>854-855
ありがとうございます
数字を使ったのは単なるサンプルなので・・・実際は文字列が入っています
今はcatで単純マージしたあとにviで重複箇所を削っていて
かつそのファイルを利用する時にsortしてuniqしています
できればファイルサイズとかも気にしたいので
パイプとかで簡単かつ堅実に出来ないかなと思ったのです

873 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/09(木) 13:40:12.55 .net]
すでにソートされてるんならuniqだけでいいんじゃね
そうじゃないんなら、ありうる最大限一般的な例を出さないのがだめ

874 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/09(木) 16:02:59.69 .net]
awk 使うとか

$ cat file1.txt file2.txt | awk '{if(!u[$0]){u[$0]=1;print;}}'

875 名前:名無しさん@お腹いっぱい。 [2017/02/09(木) 19:01:56.53 .net]
https://www.youtube.com/watch?v=quIHgwuF6r4&sns=em

876 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/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 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/09(木) 19:14:30.15 .net]
>>860
入力イメージは(id, x, y)で
3カラム目がy座標、2カラム目がx座標です

878 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/09(木) 19:50:30.95 .net]
区間に分けていいんなら、100単位で丸めたキーを追加してソートすればいいけど、
その比較関数をきっちり実装するのは無理があるね
awkかそれ以上のスクリプト言語使うくらいかな

879 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/09(木) 20:07:21.71 .net]
プラマイ100とかだと全部同じ値になるんじゃないの?
四捨五入で丸めるなら分かるけど

880 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/09(木) 21:01:26.79 .net]
pythonのsortはstableだと保証されてるけど、他のは?

881 名前:859 mailto:sage [2017/02/09(木) 21:46:47.59 .net]
>>862
>>863
入力イメージの値にあるみたいに丸めだと欲しい結果が得られないのでスクリプト言語使ってみます
ありがとうございます

>>864
stableかどうかはあんまり考えてませんでした
1カラム目のユニークな値でソート済みなところからの処理なので
stableじゃないsortの場合は比較ロジックに1カラム目を追加して対応します

882 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/09(木) 22:44:27.46 .net]
んー、500=560で、560=620だけど、500<620って、ソート誤らんかな

883 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/09(木) 23:31:32.77 .net]
>>865
このスレで言うべきでは無い気はするけど
Excelとかの表計算ソフトを使った方が良さそうな気が

884 名前:859 mailto:sage [2017/02/10(金) 00:45:19.33 .net]
>>866
ユニークなキーも比較条件に追加すれば並び順は一意に決まるので誤ることはないかと

>>867
シェルスクリプトでいろいろ処理する途中の処理なんです

885 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/10(金) 01:36:54.52 .net]
>>868
qsortを仮定して、たまたまピボットが560になったときと
620になったときで結果が変わるよ

誤るというか、結果が一意で

886 名前:ない []
[ここ壊れてます]



887 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/10(金) 02:16:12.75 .net]
1カラム目がユニークキーだとしてそれも比較条件に入れれば
各行の比較で必ず上下関係が明確になるのでqsortでも大丈夫じゃないでしょうか

001 620
002 560
003 500

888 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/10(金) 05:48:37.28 .net]
シェルでも他言語でもプログラミングが必要で
ループ処理しながら選択ソートするしかないね

まあまずシェルで〜とかじゃなくて
ExcelでもJavaでも何でもいいから簡単に実装できる方法を調べてみて
シェルに落としこめるかを調べた方がいいと思う
例えば偏差とか一般的で誰でも使うから統計処理なんてawkで楽に出来るんだけど
>>860がやりたいのって特殊だから独自実装が必要になると思うよ

茶化してるわけじゃないけど
はじめに自分がやりたいことは何なんでしょうって聞くのが早いと思う

889 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/10(金) 06:15:23.45 .net]
数学詳しくないけど
前後のデータの単純比較じゃなくて
全データとの比較が必要になるから
コマンド1発じゃ無理だね(10発くらいでも無理だけど)

キーを追加するにしてもデータ数-1分のキーが必要になるし(xとyでさらに2倍か)
キーが別だからそこからソートする方法が浮かばない
スクリプトでもプログラムでもいいけど
プラマイ100を同値とするソートのロジック組むしかないと思う

890 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/10(金) 08:25:47.98 .net]
>>870
qsortの中身知ってる?
パーティショニングしたらあとはブロック内の入れ替えしかしないよ

891 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/10(金) 08:29:02.88 .net]
>>872
データ数-1とか2倍とか意味わからん

892 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/10(金) 09:53:38.19 .net]
>>868
並び順は良いだろうけど
A=B B=C A≠C の時そもそもどうなれば良いの?
001 A
001 B
??? C

893 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/10(金) 10:06:02.58 .net]
ソートっていうのは同値類とその間の全順序を決めて要素を並べることだよね

>>860のcompareだと推移律を満たさないので同値類になっていない
だからおかしなことになる

894 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/10(金) 10:15:12.36 .net]
このように複雑になる場合は要求定義が不適切な事が多い

895 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/10(金) 10:16:20.47 .net]
普通に全部出せよ
何で小出しにしてんだよアホじゃねえよ

896 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/10(金) 10:35:17.25 .net]
複雑って言うか単純なんだけど特殊なだけでしょ



897 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/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 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/10(金) 10:59:36.91 .net]
ぶっちゃけプログラムを書くのは簡単

899 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/10(金) 11:04:25.90 .net]
特殊じゃなくて曖昧なんでしょ
早い話、1000x1000の平面のすべての整数座標に点があったらどうソートしたいわけ?
2次元だからややこしいわけでなく1次元でも同じこと

900 名前:873 mailto:sage [2017/02/10(金) 11:07:21.05 .net]
>>880
俺になんの用?

901 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/10(金) 11:15:25.85 .net]
>>883
ごめん間違えた>>860

>>882
いや曖昧じゃない
2次元と言うのもちょっと複雑にしてるだけだろう
プラマイ100以内は同じと言う明確な基準がある

ただたぶんこのソートの結果は>>880に記したように
初期のデータの並びによって変わる部分があると思うね
だからこのソートは>>860の思いつきソートだってことだ

902 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/10(金) 11:38:39.44 .net]
多分、縦横10000くらいある座標にポツポツしかないと予想した処理なんだろうよ

903 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/10(金) 14:05:33.33 .net]
>>884
(0, 100)
(99, 300)
(198, 200)
どう並べりゃ良いのよ?

904 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/10(金) 14:12:56.80 .net]
>>886
(0, 202)
(99, 101)
(198, 0)
こうか

905 名前:873 mailto:sage [2017/02/10(金) 14:39:27.08 .net]
(0,999)
(0,998)
...
(0,1)
(0,0)

どう並べる?

906 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/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 名前:名無しさん@お腹いっぱい。 [2017/02/10(金) 15:56:58.38 .net]
.
.
東京都三鷹市 元ニコ生主の莉里子です (整形後) i.imgur.com/SLcz3dS.jpg (整形前) i.imgur.com/zPvxpx5.png
不倫・浮気・密会・不道徳な行為は著名な小説家でしている人がいるので真似しちゃう池沼です i.imgur.com/vZeIuO3.png


■2015年2月 釣りニコ生主コジコジと沖縄旅行でオフパコ

2015年2月2日-3日...釣り生主コジコジと沖縄旅行でセックス/やり捨てされ逆ギレ
2015年2月4日.........莉里子の父親から電話があって脅されたとコジコジに放送で暴露される
2015年2月6日.........リスカ画像UP 
2015年2月9日.........ツイ全消し/コミュ爆破逃亡
imgur.com/a/58WQC 

■2016年6月 バンドマン兼ニコ生ツイキャス配信者と密会 その3日後に穴るセックス〜継続中
imgur.com/a/Lx8o2


●早川莉里子●土井莉里子●土井寧々●土井剛●早川剛●星崎●りりこ●りりこし●にゃんぱす
●ね子●にゃこ●みんち●めう●ねね●猫又●剛


※名古屋ゲイ風俗ホストとも体の関係※

908 名前:名無しさん@お腹いっぱい。 [2017/02/10(金) 15:57:21.03 .net]
.
.
莉里子(本人公表)1994年3月7日 or 1996年4月25日 imgur.com/a/oJZpv
生主時代(にゃんぱす、りりこし、莉里子)
剛 i.imgur.com/dQxxGuV.png  imgur.com/a/gPaof
 

東京都三鷹市 シティハイツ吉祥寺通り
i.imgur.com/UmTmbcu.jpg
i.imgur.com/cODTuzm.png
i.imgur.com/KdyuUod.png
imgur.com/a/eeixK (見せたがり乱交好きのメンヘラ) i.imgur.com/9V5mmTh.png

i.imgur.com/lobby7w.png
i.imgur.com/AdewV6O.jpg
i.imgur.com/YQaNYBd.png
i.imgur.com/pdsCXHG.jpg


莉里子 緊縛ハメ撮り師 『相馬ドリルrenji』 とラブホに2人で入って フルヌード緊縛ハメ撮り
https://pbs.twimg.com/media/CpFjMz0UEAAurD-.jpg  i.imgur.com/xaAhkiD.png
https://twitter.com/somadrill/status/761498960028499968
imgur.com/a/3dnz5
i.imgur.com/SAAZ0fQ.png

909 名前:名無しさん@お腹いっぱい。 [2017/02/10(金) 15:57:31.97 .net]
.
.
.

>悪質パクツイ垢(自称ハッカー)のコピーライティング特定されててワロた

@copy__writing の中の人は東京都三鷹市の莉里子

https://twitter.com/copy__writing
i.imgur.com/LyXsDj9.png
i.imgur.com/nqT3xBN.png
i.imgur.com/2FlhfLE.jpg
https://www.mercari.com/jp/u/446591929/

910 名前:名無しさん@お腹いっぱい。 [2017/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 (新アカ) imgur.com/a/X1vQA

911 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/10(金) 22:49:49.54 .net]
>>889
再現性はあるの?
手で実行してるのか知らないけど
lsの結果をファイルにリダイレクトしといて(ログ残しておいて)
地道に調べるしかないと思う

912 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/14(火) 09:44:10.27 .net]
SJISで漢字を含むCSVファイルを入力として、

while read line
do
なんちゃら
done < CSV

みたいに一行ずつ読み込んでなんちゃらすると、特定の漢字をreadで取った時に文字化けするんだが
これの回避策って兄貴何かないかな
とりあえずIFSを改行のみにしてfor line in `cat CSV`にして凌いだが、IFSいじるのが気持ち悪くて仕方がない

913 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/14(火) 10:11:22.08 .net]
なんの漢字?

914 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/14(火) 10:13:38.18 .net]
SJISなんてウンコを触っておきながらIFS弄るのが気持ち悪いというのは矛盾

915 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/14(火) 10:35:53.64 .net]
>>895
0x5C を含む漢字でしょ、「表」とか
だったら read -r line で

916 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/14(火) 10:44:50.39 .net]
>>898
KOREDAAAAA!!!
ありがとう兄貴
ちなみに構造って感じでつまづいてた
SJIS扱うのは古いプロジェクトならよくあることよ



917 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/14(火) 10:54:10.92 .net]
そうか2バイト文字の1バイトが&#165;なせいでエスケープ扱いしちゃってたのな…
UTF8とかだと回避出来るんかなこれは

918 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/14(火) 11:54:23.78 .net]
んなもん当たり前だろ、としか思えない私はおっさん確定。SJIS死すべしと思っていたのは25年前くらい?
これが世代というものなんですね……

919 名前:894 mailto:sage [2017/02/14(火) 13:40:31.07 .net]
25年前からプログラマやってる人と並んだらさすがに俺はクソガキだわ
にしても意外なほどググっても出ないな、それほどマイナーなのかこの症状
もしくは当たり前すぎるのか

920 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/14(火) 15:20:01.03 .net]
>>902
sjis ダメ文字でググればごろごろと

921 名前:894 mailto:sage [2017/02/14(火) 15:23:50.72 .net]
>>903
sh read 漢字 文字化け とかで出てほしかった…
勉強なったわサンクス

922 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/14(火) 15:40:03.34 .net]
sjis 文字化け でも出るで
もう少しやったな

923 名前:894 mailto:sage [2017/02/14(火) 16:05:30.25 .net]
あー、出るには出るけど多分readとの関連に気づかなかったろうな…ダメ文字ってものをまず知らなかったし
特定の漢字が文字化けってあたりの記事から推察して、SJISがなんかマズイってとこにはたどり着いたかもしれんが、多分それでもread -rには気づかなかったと思うわ
iconv -t utf8してたと思う

924 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/14(火) 17:11:17.24 .net]
>>906
iconv を利用するのはアリだと思うよ。
業務系のシェルスクリプトでも「SJIS データを一時的に UTF-8 にコンバートして何らかの処理をした後に SJIS に戻す」という手法で実装することがある。

925 名前:894 mailto:sage [2017/02/14(火) 17:17:09.33 .net]
>>907
便利だよねiconv

926 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/14(火) 20:50:41.08 .net]
おれは、使い慣れてるnkfでcp932→utf-8に変換してから作業してるわ。



927 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/15(水) 01:22:16.71 .net]
そんで戻ってこない文字が出てきて泣きそうになるまでがテンプレだね。

928 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/15(水) 01:34:33.21 .net]
それでもiconvなら
iconvならきっとなんとかしてくれる

929 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/15(水) 04:53:01.40 .net]
元がcp932なら変換不能になることはないだろう
そう、iconvならね

930 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/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 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/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 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/18(土) 05:52:55.03 .net]
>>914
readarray -t ARRAY < <(cat test.txt)
で綺麗に配列として読まれますね。
これでいま作っている自作ツールが完成出来ます。
ありがとうございます

933 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/18(土) 09:43:20.54 .net]
最初の例のやつ、多分配列になってないんじゃないか

934 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/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 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/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)使うか
mywiki.wooledge.org/BashFAQ/005#Loading_lines_from_a_file_or_stream

936 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/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)使うか
> mywiki.wooledge.org/BashFAQ/005#Loading_lines_from_a_file_or_stream

ありがとうございます。
もっと勉強します



937 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/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 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/20(月) 18:00:26.41 .net]
>>920
declare -p !!!
知らなんだ

939 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/20(月) 18:11:16.14 .net]
このスレ来ると度々便利な知識得られるからいいわ
grep -oとか

940 名前:名無しさん@お腹いっぱい。 [2017/02/21(火) 05:20:06.32 .net]
配列にするなら
ARRAY=( $(cat test.txt) )

941 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/21(火) 16:45:06.28 .net]
>>923
echo A > test.txt ; echo B C >> test.txt みたいにスペースなんかが入ると…

942 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/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 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/02/28(火) 23:57:54.64 .net]
echo test | grep a
みたいな時に終了コードはgrepこの場合1
でかつ標準出力にはtestが出ていて欲しいのですが

どうしたらいいでしょうか?
環境はbashです

944 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/01(水) 00:40:42.45 .net]
echo test | tee /dev/tty | grep a

でどうだろう?

945 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/01(水) 00:57:07.01 .net]
終了コード1のときにはその文字列を表示したいとかによって違う気がする。
常に入力をそのまま出力していいのだろうか。

946 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/01(水) 01:36:33.88 .net]
仕様を細かく詰めてない気がするけど とりあえず
echo test | ( grep -v a; exit $(expr \( "$?" + 1 \) % 2 ))



947 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/01(水) 02:35:11.20 .net]
みなさん、ありがとうございます

echo の部分は常に表示、grepは結果のみ欲しいので-qで、判定につかうインプットは常に全量表示して、結果はリターンコード、標準出力は人が見るよう、リターコードはその後のシステム的な分岐につかう的な目的です(後続はbashの世界でないのでワンライナーが嬉しい)

948 名前:名無しさん@お腹いっぱい。 [2017/03/01(水) 05:09:32.29 .net]
macのsipsコマンドについて質問しても大丈夫ですか?
例えば-zと-sを一緒に実行して--out でフォルダに書き出したいとして
どういうルールで並べて記述すればいいでしょうか?

sips -Z 200 * -s format jpeg --out Converted/
あれこれいじって、たまたまこれで動いたのですが
正しいのかわかりません。
よろしくお願いします。スレチだったらすいません。

949 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/01(水) 09:20:45.49 .net]
>>930
grep にこだわらくても良くて、GNU sed を使ってもいい場合:

$ echo test | sed '/a/!q1'
test
$ echo $?
1

950 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/01(水) 09:22:21.87 .net]
>>931
正しいけどスレチ
man見ろ
見られないんなら
https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man1/sips.1.html

951 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/01(水) 09:41:41.92 .net]
要求満たしつつ個人的に好きなのは>>927

952 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/01(水) 09:50:14.78 .net]
「標準出力」じゃないから要求満たしてないんじゃない?

953 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/01(水) 10:04:09.41 .net]
>>931
そういえばこういうスレもあったり
【Macintosh】MacでUNIX【Terminal】
echo.2ch.net/test/read.cgi/unix/1123501408/

mac板でよかった気もするけど
OS XをUnixとして使ってる人の為のスレ 18
potato.2ch.net/test/read.cgi/mac/1462475819/

954 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/01(水) 10:17:52.51 .net]
>>932
あ、間違えた…こうしないと

$ echo test | sed -n 'p;/a/H;${x;/./q0;q1}'

955 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/01(水) 12:19:32.48 .net]
echo test | awk '/a/{x=1}//END{exit !x}'

956 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/01(水) 17:16:16.75 .net]
$ echo test | awk '/a/{x=1}{print}END{exit !x}'

じゃないの?



957 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/01(水) 17:36:55.41 .net]
$ echo test | grep -B10000 -A10000 a

958 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/01(水) 17:38:08.89 .net]
あああ、1行もマッチしないとダメだ

959 名前:名無しさん@お腹いっぱい。 [2017/03/01(水) 21:54:56.86 .net]
>>933 >>936
スレチにもかかわらずありがとうございました!

960 名前:名無しさん@お腹いっぱい。 [2017/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 名前:名無しさん@お腹いっぱい。 [2017/03/04(土) 09:17:20.48 .net]
あー in が抜けてる
for i in *.jpg ; do な

962 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/04(土) 10:32:40.92 .net]
ImageMagickのconvertみたいなものか

963 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/04(土) 18:32:17.60 .net]
>>943
>ところでマカーな人はbash4入れてるんですかね。

Homebrewで入れてそっち使うようにしてる

964 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/07(火) 19:02:41.56 .net]
いつもシェルが使える環境ある?
自分は仕事ならcygwin(今は使ってない)、実機、仮想環境
プライベートならラズパイ、仮想環境かな

965 名前:名無しさん@お腹いっぱい。 [2017/03/07(火) 22:43:56.07 .net]
Mac

966 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/07(火) 23:30:24.96 .net]
俺はスマホにzsh入れてるけど



967 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/08(水) 01:50:34.93 .net]
>>947
SL-Zaurus(SL-C860)を今だに現役で使っているよ

968 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/09(木) 02:31:23.57 .net]
そういうのって
ただ書けるだけじゃなくて動かせたり
実際にその機械で便利に使えたりするのですか?






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

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

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