シェルスクリプトに関する総合スレッドです。
全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。
・「○○(他の言語)でいいやん」は禁止。他のスレに行ってください。
・「POSIX原理主義」「ユニケージ」「USP研究所」はPOSIXとUnixを曲解し
間違ったシェルスクリプトを広めている宗教です。洗脳されないようにしてください。
前スレ: シェルスクリプト総合 その36
https://mevius.5ch.net/test/read.cgi/tech/1614212414/
関連スレ
・【Bash】Windows Subsystem for Linux【WSL】11
https://mao.5ch.net/test/read.cgi/linux/1627507889/
・Bashでプログラミング [転載禁止](c)2ch.net
https://mao.5ch.net/test/read.cgi/linux/1443885102/
・シェルスクリプト総合 その28
https://mevius.5ch.net/test/read.cgi/unix/1533154936/
・zsh その7
https://mevius.5ch.net/test/read.cgi/unix/1337844883/
・過去UNIXで使われていた ksh というシェルについて
https://mevius.5ch.net/test/read.cgi/unix/1582358403/
・【POSIX】UNIXプログラミング【BSD】 [転載禁止](c)2ch.net
https://mevius.5ch.net/test/read.cgi/unix/1443103705/
・おまえら! shell は何を使っているんですか?
https://mevius.5ch.net/test/read.cgi/unix/1012330865/
シェルスクリプト総合 その37
■ このスレッドは過去ログ倉庫に格納されています
2021/10/05(火) 22:49:30.91ID:KsbWuyFp
541デフォルトの名無しさん
2022/01/03(月) 02:53:21.64ID:NkK7sfLH >>532
ファイルやソケットや標準入力から読んで作った文字列を eval に渡すなんてのがあったらダメかも知れないが、
これはもうプログラムの作りが悪いと言えるな。SQLインジェクションと同じだし。
require でソース読むやつは事前にチェックされてないのではないかな?
use でのモジュール読み込みはコンパイルされるが。
ファイルやソケットや標準入力から読んで作った文字列を eval に渡すなんてのがあったらダメかも知れないが、
これはもうプログラムの作りが悪いと言えるな。SQLインジェクションと同じだし。
require でソース読むやつは事前にチェックされてないのではないかな?
use でのモジュール読み込みはコンパイルされるが。
542デフォルトの名無しさん
2022/01/03(月) 03:07:40.68ID:bmMFL9ij パール爺さんウザイ
543デフォルトの名無しさん
2022/01/03(月) 03:10:09.55ID:NkK7sfLH すまんのう。
544デフォルトの名無しさん
2022/01/03(月) 03:20:04.46ID:AIc8F3zq フルーツパーラー
545デフォルトの名無しさん
2022/01/03(月) 04:04:45.94ID:mfU61qLK パーラーリラパラリラ
546デフォルトの名無しさん
2022/01/03(月) 04:04:54.39ID:cOflznJy 正直、何となくまずいとは感じる程度のものだったけど解像度が上がって良かったと思ってる
単純なファイル操作だけど対象が巨大で時間がかかるってのは中々お目にかからない
単純なファイル操作だけど対象が巨大で時間がかかるってのは中々お目にかからない
547デフォルトの名無しさん
2022/01/03(月) 09:44:56.65ID:8bAzmZsa548デフォルトの名無しさん
2022/01/03(月) 10:01:01.93ID:mfU61qLK わかるなら説明しろ。そうやって回答から逃げる手だってバレバレだ。
549デフォルトの名無しさん
2022/01/03(月) 12:52:48.32ID:AKaSmxyk >>541
> require でソース読むやつは事前にチェックされてないのではないかな?
だからなに?
自分で書いてるやん。w
> これはもうプログラムの作りが悪いと言えるな。SQLインジェクションと同じだし。
ただし、実行時でなくロード時に読みきることは変わらないので、結局、シェルスクリプトほどのリスクはない。
> require でソース読むやつは事前にチェックされてないのではないかな?
だからなに?
自分で書いてるやん。w
> これはもうプログラムの作りが悪いと言えるな。SQLインジェクションと同じだし。
ただし、実行時でなくロード時に読みきることは変わらないので、結局、シェルスクリプトほどのリスクはない。
550デフォルトの名無しさん
2022/01/03(月) 16:05:02.85ID:Tvis+k5K >メモリサイズはpsでわかる
そんな装備で大丈夫か?
そんな装備で大丈夫か?
551デフォルトの名無しさん
2022/01/03(月) 19:01:29.66ID:mfU61qLK シェルスクリプトのリスクは高い
なぜなら普通やるだろ?
起動中にプログラム書き換え
な?
なぜなら普通やるだろ?
起動中にプログラム書き換え
な?
552デフォルトの名無しさん
2022/01/03(月) 23:36:43.52ID:Izj8gspx やんないよw
頭おかしいやろ
頭おかしいやろ
553デフォルトの名無しさん
2022/01/03(月) 23:42:21.51ID:Sz4S1PaG 結局シェルスクリプトが原因じゃなく
シェルスクリプト使いの低スキルが原因だった
シェルスクリプト使いの低スキルが原因だった
554デフォルトの名無しさん
2022/01/04(火) 00:46:56.04ID:GepGyN7D 自己書き換えシェルスクリプトは、昔に見た記憶があるな。
動作がちゃんとわかってれば、有用な機能として使えるんだろ。
動作がちゃんとわかってれば、有用な機能として使えるんだろ。
555デフォルトの名無しさん
2022/01/04(火) 04:39:07.32ID:mpSUdZEa 例えばWindowsのログオンスクリプトとかに使われるバッチファイルもアトミックな更新が必要になるね
そういう場合はログインする可能性のない夜間とかを狙って更新したりする
スパコンのアホは、よりによってバックアップ中にバックアップのスクリプトを更新しようとした
上の例で言えば一番ログインが試行される始業時間帯とかを狙ってわざわざ更新するようなもの
どれだけ愚かな行為か想像できよう
そういう場合はログインする可能性のない夜間とかを狙って更新したりする
スパコンのアホは、よりによってバックアップ中にバックアップのスクリプトを更新しようとした
上の例で言えば一番ログインが試行される始業時間帯とかを狙ってわざわざ更新するようなもの
どれだけ愚かな行為か想像できよう
556デフォルトの名無しさん
2022/01/04(火) 05:34:07.92ID:A3JfSOSv OSやファイルシステムによっては出来ないかも知れないが、プログラム動作中に新バージョンへの入れ替えを
行っても動作しているプロセスはそのまま動かし続けて影響させず、次回起動時から新しい方が動く方式にして
おけば良かった。例えば Linux や UNIX 系 OS ならシンボリックリンクの指す先を変えることでこれは可能だ。
Windowsではどうやるか知らないがシンボリックリンクはあるようなので多分出来るんじゃないだろうか。
行っても動作しているプロセスはそのまま動かし続けて影響させず、次回起動時から新しい方が動く方式にして
おけば良かった。例えば Linux や UNIX 系 OS ならシンボリックリンクの指す先を変えることでこれは可能だ。
Windowsではどうやるか知らないがシンボリックリンクはあるようなので多分出来るんじゃないだろうか。
557デフォルトの名無しさん
2022/01/04(火) 06:04:36.10ID:mpSUdZEa >>556
Windowsだとリンクを一旦削除してから張り直す事になるから無理だろうね
リンク先が一旦消えるから、掴んでたバッチファイルは読み込みが途切れるか、
そもそも誰かが掴んでる状態ではリンクの削除に失敗するかどっちか
Windowsだとリンクを一旦削除してから張り直す事になるから無理だろうね
リンク先が一旦消えるから、掴んでたバッチファイルは読み込みが途切れるか、
そもそも誰かが掴んでる状態ではリンクの削除に失敗するかどっちか
558デフォルトの名無しさん
2022/01/04(火) 09:11:02.07ID:KoJ0HNB1 OSとしてはプログラムを実行中に入れ替え可能だとしても
アプリがそのように作られてない可能性はなくならない
アプリがそのように作られてない可能性はなくならない
559デフォルトの名無しさん
2022/01/04(火) 11:24:49.85ID:K01QBlyF 実行中に上書き更新しないのは当たり前
undefinedになった場合でも全データを削除しないように作るのも当たり前
どちらも当たり前だと思ってないやつが多数いるのがシェルスクリプト特有の問題
undefinedになった場合でも全データを削除しないように作るのも当たり前
どちらも当たり前だと思ってないやつが多数いるのがシェルスクリプト特有の問題
560デフォルトの名無しさん
2022/01/04(火) 11:53:26.50ID:+L/8HzOo 「全スクリプトを{ ...; exit; }で囲え」なんていうキチ・・・エッジな人もいる
561デフォルトの名無しさん
2022/01/04(火) 14:35:05.73ID:5xHtBJHw コマンドプロンプトとかいうゴミみたいなシェルは実行中にメモ帳から普通に上書き保存できるしbashみたいな更新問題がある
構文解析が闇鍋状態だからまともに(...&exit)でガードする気も起きん
構文解析が闇鍋状態だからまともに(...&exit)でガードする気も起きん
562デフォルトの名無しさん
2022/01/04(火) 14:40:41.27ID:5xHtBJHw 全スクリプトを{ ...;exit;}というとヤバいように見えるけど
... #オプション解析とか
main(){ ...;}
{ main "$@"; exit;}
とでもすれば多くの更新事故は防げると思う
... #オプション解析とか
main(){ ...;}
{ main "$@"; exit;}
とでもすれば多くの更新事故は防げると思う
563デフォルトの名無しさん
2022/01/04(火) 14:56:49.79ID:/LDsiUgA564デフォルトの名無しさん
2022/01/04(火) 14:57:43.78ID:/LDsiUgA565デフォルトの名無しさん
2022/01/04(火) 14:58:27.64ID:/LDsiUgA あ、コマンドプロンプトの話か。そっちはしらん
566デフォルトの名無しさん
2022/01/04(火) 15:13:42.85ID:MrAZHCc6567デフォルトの名無しさん
2022/01/04(火) 15:22:08.88ID:/LDsiUgA 防げないことにしたいやつも多いんだよなぁw
568デフォルトの名無しさん
2022/01/04(火) 16:48:36.33ID:96ZsKrQo569デフォルトの名無しさん
2022/01/04(火) 17:17:13.38ID:cDPvJZXV {}でくくった時の読み込み方は実装依存じゃなく仕様で保証されてる?
ここを読んだけどよく分からなかったや
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_02_03
ここを読んだけどよく分からなかったや
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_02_03
570デフォルトの名無しさん
2022/01/04(火) 21:09:09.26ID:64zZ84Fs >>568
無理
無理
571デフォルトの名無しさん
2022/01/04(火) 22:51:36.65ID:GepGyN7D >>568
sourceすりゃできんじゃないの?
sourceすりゃできんじゃないの?
572デフォルトの名無しさん
2022/01/04(火) 23:40:25.31ID:AW7Xm3ow >>571
やってみたら?
やってみたら?
573デフォルトの名無しさん
2022/01/05(水) 02:14:02.36ID:gXRPzTKb {} の中にsource入れとけばいいだろ
他のスクリプト言語と一緒
他のスクリプト言語と一緒
574デフォルトの名無しさん
2022/01/05(水) 02:56:20.38ID:5qnDyK1z いいわけないじゃん
575デフォルトの名無しさん
2022/01/05(水) 06:55:29.27ID:gXRPzTKb { } を使ってるってことは、最後の}まで読まないと実行しないんだから問題なし
{ } の中でsoruce使っていれば } を読み込んだあとでsourceが実行される
soruceで読み込むファイルでも同じように { } を使えば全部読み込まれた後に実行されるから問題なし
{ } の中でsoruce使っていれば } を読み込んだあとでsourceが実行される
soruceで読み込むファイルでも同じように { } を使えば全部読み込まれた後に実行されるから問題なし
576デフォルトの名無しさん
2022/01/05(水) 09:53:24.37ID:eMhfA/OR こいつダメだ
577デフォルトの名無しさん
2022/01/05(水) 10:18:42.52ID:xkk1B14s 低脳に絡み続ける君も同じだよ
578デフォルトの名無しさん
2022/01/05(水) 10:59:12.75ID:gXRPzTKb 低能だから{}の意味もわからない
579デフォルトの名無しさん
2022/01/05(水) 11:07:48.80ID:d+7VpUpG こういう低脳がゴロゴロ居るからやらかす奴が後を絶たない
580デフォルトの名無しさん
2022/01/05(水) 11:30:55.99ID:rp3p3Ei2 低脳は自分が低脳だと気付かないから始末が悪い
テストして確認しましたと言ってもその内容も方法も間違ってる
基本的に日本語が通じない
テストして確認しましたと言ってもその内容も方法も間違ってる
基本的に日本語が通じない
581デフォルトの名無しさん
2022/01/05(水) 12:38:42.04ID:yzDYKn2O 高い堅牢性が必要な処理にシェルスクリプトは向かない
582デフォルトの名無しさん
2022/01/05(水) 13:12:18.88ID:ga42ykuy こんな不確かな情報に頼ってまでやることじゃないと思うのだが
普通にスクリプト側に更新機能でも追加した方が確実だし
普通にスクリプト側に更新機能でも追加した方が確実だし
583デフォルトの名無しさん
2022/01/05(水) 13:18:00.85ID:ceAZRPz/ 低脳が携わらなければ何も問題無くなる
584デフォルトの名無しさん
2022/01/05(水) 14:45:39.80ID:3uURdH+S メモリ使用量を計測させれば
低脳の足切りが出来るぞ
低脳の足切りが出来るぞ
585デフォルトの名無しさん
2022/01/05(水) 21:24:39.70ID:gXRPzTKb {}が安全だとわからないアホは
}を読まないと文法が確定しないからって
理屈がわからないんだろうな
}を読まないと文法が確定しないからって
理屈がわからないんだろうな
586デフォルトの名無しさん
2022/01/05(水) 21:25:07.58ID:gXRPzTKb587デフォルトの名無しさん
2022/01/05(水) 21:25:43.70ID:gXRPzTKb588デフォルトの名無しさん
2022/01/05(水) 23:00:14.61ID:w3EWhbnX ホンモノのガイジなんだね。。
589デフォルトの名無しさん
2022/01/06(木) 10:05:53.46ID:oxm3scqT590デフォルトの名無しさん
2022/01/06(木) 15:32:38.44ID:mkXv+CyB >>586の方法は重大な欠陥が2つある
スパコンのデータ削除したやつと同レベル
スパコンのデータ削除したやつと同レベル
591デフォルトの名無しさん
2022/01/07(金) 00:05:11.34ID:5/GZEBm/ >>589
必死すぎじゃね?それで議論に勝ったつもりでいるんだろうけどさ
必死すぎじゃね?それで議論に勝ったつもりでいるんだろうけどさ
592デフォルトの名無しさん
2022/01/07(金) 00:05:37.54ID:5/GZEBm/ >>590
ないよ。一つも欠陥について述べられてない
ないよ。一つも欠陥について述べられてない
593デフォルトの名無しさん
2022/01/10(月) 00:22:34.19ID:MINWORCd スレ立てるまでもない質問はここで 158匹目
https://mevius.5ch.net/test/read.cgi/tech/1635193843/538
ここに、YouTube で有名な、雑食系エンジニア・KENTA のサロンの、
Ruby on Rails 初心者用コースの内容を書いておいた
基本的に、Rails以外のフレームワークは、シェアが少ないのでおすすめしない。
学習環境も揃わないので、無理
Railsでは、Railsチュートリアル・Railsガイド・
黒田努の3冊の本・パーフェクト Ruby on Rails・Ruby on Rails 6 エンジニア養成読本とか、
Rubyでは、改訂2版 パーフェクトRuby・改訂2版 Ruby逆引きハンドブックなどの教科書が揃っている
これほど、良い教科書が揃っているフレームワークはない!
Laravel のシェアは少しあるけど、KENTAがPHP は一生やる必要がないと言ったので、
PHP自体がオワコンになってしまったw
日本のウェブ開発の将来は、ほぼKENTAが決めている。
Scala を滅ぼしたのも、KENTA
https://mevius.5ch.net/test/read.cgi/tech/1635193843/538
ここに、YouTube で有名な、雑食系エンジニア・KENTA のサロンの、
Ruby on Rails 初心者用コースの内容を書いておいた
基本的に、Rails以外のフレームワークは、シェアが少ないのでおすすめしない。
学習環境も揃わないので、無理
Railsでは、Railsチュートリアル・Railsガイド・
黒田努の3冊の本・パーフェクト Ruby on Rails・Ruby on Rails 6 エンジニア養成読本とか、
Rubyでは、改訂2版 パーフェクトRuby・改訂2版 Ruby逆引きハンドブックなどの教科書が揃っている
これほど、良い教科書が揃っているフレームワークはない!
Laravel のシェアは少しあるけど、KENTAがPHP は一生やる必要がないと言ったので、
PHP自体がオワコンになってしまったw
日本のウェブ開発の将来は、ほぼKENTAが決めている。
Scala を滅ぼしたのも、KENTA
594デフォルトの名無しさん
2022/01/10(月) 03:25:05.00ID:vc9CW7XN ケントってデリカット?
595デフォルトの名無しさん
2022/01/10(月) 15:35:23.09ID:z5NM8L7h 日本にいるのはギルバードの方
デリカットは帰国
デリカットは帰国
596デフォルトの名無しさん
2022/01/10(月) 17:42:51.83ID:vc9CW7XN 親子じゃないのか?
597デフォルトの名無しさん
2022/01/10(月) 23:18:15.37ID:6sJlMFRp 山形弁の人は?
598デフォルトの名無しさん
2022/01/16(日) 19:06:30.23ID:gUcw8FaB タバコだよ
599デフォルトの名無しさん
2022/01/21(金) 21:19:42.93ID:BxTeu8sU 藤林丈司
600デフォルトの名無しさん
2022/02/03(木) 14:44:47.61ID:PlIeOUah 質問スレなかったのでここで質問させてください。
フォルダ以下の全てのファイル内の特定の文字列からn行ずれた文字列を置換したいんですが、どういうコマンドを打ったら良いでしょうか?
具体的にやりたいこととしては、Unityのprefabファイルやsceneファイル(テキストファイル)に張り付いている特定のコンポーネントの名前を一括で置換したいです。
ファイルの構造は↓こんな感じになっていて、guidがc5b2e3eb25e32904fa18c5ae09b782d9の行の1行下のm_nameを書き換えたいんですが、コマンドがうまく動きません
https://github.com/Unity-Technologies/FPSSample/blob/master/Assets/Prefabs/Cameras/ServerCameraSpot.prefab#L51
作りかけのコマンド
git grep -n c5b2e3eb25e32904fa18c5ae09b782d9-- '*.prefab' | cut -f 1,2 -d ":" | awk -F ":" '{print $1 ":"($2 + 1)}' | sed -n $2p
適当にsedでm_nameを置換指定してしまうと、guidがc5b2e3eb25e32904fa18c5ae09b782d9以外のものまで置換してしまうので、
最初のgit grepでファイル名と行番号他を取得し、次のcutでファイル名と行番号だけにして、awkで行番号+1して、ファイル名と+1した行番号を元に、
ファイル名と行番号を指定したsed -eをしたいんですがprintしたものがうまく最後のsedに渡ってきません
フォルダ以下の全てのファイル内の特定の文字列からn行ずれた文字列を置換したいんですが、どういうコマンドを打ったら良いでしょうか?
具体的にやりたいこととしては、Unityのprefabファイルやsceneファイル(テキストファイル)に張り付いている特定のコンポーネントの名前を一括で置換したいです。
ファイルの構造は↓こんな感じになっていて、guidがc5b2e3eb25e32904fa18c5ae09b782d9の行の1行下のm_nameを書き換えたいんですが、コマンドがうまく動きません
https://github.com/Unity-Technologies/FPSSample/blob/master/Assets/Prefabs/Cameras/ServerCameraSpot.prefab#L51
作りかけのコマンド
git grep -n c5b2e3eb25e32904fa18c5ae09b782d9-- '*.prefab' | cut -f 1,2 -d ":" | awk -F ":" '{print $1 ":"($2 + 1)}' | sed -n $2p
適当にsedでm_nameを置換指定してしまうと、guidがc5b2e3eb25e32904fa18c5ae09b782d9以外のものまで置換してしまうので、
最初のgit grepでファイル名と行番号他を取得し、次のcutでファイル名と行番号だけにして、awkで行番号+1して、ファイル名と+1した行番号を元に、
ファイル名と行番号を指定したsed -eをしたいんですがprintしたものがうまく最後のsedに渡ってきません
601デフォルトの名無しさん
2022/02/03(木) 16:11:17.44ID:709dXRKt602デフォルトの名無しさん
2022/02/03(木) 16:30:52.62ID:vAyV6XNb 処理時間気にしないなら
|while IFS=: name line etc; do sed -e "$((line+1)) s///" $name; done
とかで良くない?
|while IFS=: name line etc; do sed -e "$((line+1)) s///" $name; done
とかで良くない?
603デフォルトの名無しさん
2022/02/03(木) 20:04:28.20ID:Vl/Cta+D604デフォルトの名無しさん
2022/02/03(木) 20:05:59.05ID:Vl/Cta+D まあ別にawkにこだわらなくてもperlとかでもいいけどさ
605デフォルトの名無しさん
2022/02/04(金) 00:19:45.01ID:ZnGIs6if >>600
perl 使ってこんな風にするとか。
perl -pe 'if($f){s/m_Name:/置換したい文字列/}$f=/guid: c5b2e3eb25e32904fa18c5ae09b782d9/' 読むファイル >書くファイル
少なくとも一つ前の行の状態を今読んだ行の処理をする時に分かっていないとできない。
読む方法を行単位にしないのであればその限りではないが。
perl 使ってこんな風にするとか。
perl -pe 'if($f){s/m_Name:/置換したい文字列/}$f=/guid: c5b2e3eb25e32904fa18c5ae09b782d9/' 読むファイル >書くファイル
少なくとも一つ前の行の状態を今読んだ行の処理をする時に分かっていないとできない。
読む方法を行単位にしないのであればその限りではないが。
606デフォルトの名無しさん
2022/02/04(金) 00:34:59.66ID:dkixXFTm perl おじはスレタイ読んで
607デフォルトの名無しさん
2022/02/04(金) 00:45:37.37ID:ZnGIs6if もう一つ awk, sed, xargs の組み合わせでやるやつを考えたが書き込もうとするとエラーになって書けない。
要約を書くと
grep で行番号付きで出力 | awk でコロン区切りで読んで $1 をカンマ区切りで連結した文字列を作った後でその後ろに "s/m_Name:/xxxxx/" の文字列を付けて出力 | xargs で入力はsedスクリプトになるようにしてsedが読むファイルは最初にgrepで指定したファイルと同じにする。
要約を書くと
grep で行番号付きで出力 | awk でコロン区切りで読んで $1 をカンマ区切りで連結した文字列を作った後でその後ろに "s/m_Name:/xxxxx/" の文字列を付けて出力 | xargs で入力はsedスクリプトになるようにしてsedが読むファイルは最初にgrepで指定したファイルと同じにする。
608デフォルトの名無しさん
2022/02/04(金) 00:48:16.47ID:u6SyGW4o unity yamlをparseするほうが堅い
609デフォルトの名無しさん
2022/02/04(金) 00:59:39.90ID:gwUGsBJ+ >>606
シェルスクリプトでperlワンライナーはごく普通
シェルスクリプトでperlワンライナーはごく普通
610デフォルトの名無しさん
2022/02/04(金) 01:03:24.21ID:r4soLYsS そんなこといったら
pythonだってシェル使ってワンライナーやろうと思えばできるじゃん
pythonだってシェル使ってワンライナーやろうと思えばできるじゃん
611デフォルトの名無しさん
2022/02/04(金) 01:16:35.08ID:53s+UEIz せっかくのシェルスクリプトで
ワンライナーにこだわるやつはバカだろ
ワンライナーにこだわるやつはバカだろ
612デフォルトの名無しさん
2022/02/04(金) 01:25:44.27ID:53s+UEIz >>600
なにをどう変えたいのか知らん(読むの面倒)けどこうすればいいだけ
自分でパズル(ワンライナー)問題を作ろうとするな
cat prefab | awk '
/guid: c5b2e3eb25e32904fa18c5ae09b782d9/ {
print
getline
print $0 "new"
next
}
{ print }
'
なにをどう変えたいのか知らん(読むの面倒)けどこうすればいいだけ
自分でパズル(ワンライナー)問題を作ろうとするな
cat prefab | awk '
/guid: c5b2e3eb25e32904fa18c5ae09b782d9/ {
getline
print $0 "new"
next
}
{ print }
'
613デフォルトの名無しさん
2022/02/04(金) 01:54:33.36ID:s9suXC4h >>612
それくらいならSedのが!w
それくらいならSedのが!w
614デフォルトの名無しさん
2022/02/04(金) 02:08:49.30ID:CBYs6kse awk -v "var=`grep -A 1 'guid: c5b' source.prefab | sed -n '2p'`" '{ sub(var, "hello, world!"); print }' source.prefab > after.prefab
615デフォルトの名無しさん
2022/02/04(金) 05:17:13.50ID:QBYNvY3/616デフォルトの名無しさん
2022/02/04(金) 05:38:41.45ID:53s+UEIz617デフォルトの名無しさん
2022/02/04(金) 05:40:08.51ID:53s+UEIz 一ヶ月後、一年後、
読み返してすぐに理解できるのはどっち?って話だよ
読み返してすぐに理解できるのはどっち?って話だよ
618デフォルトの名無しさん
2022/02/04(金) 06:02:38.15ID:o4wrdq2F 可読性w
619デフォルトの名無しさん
2022/02/04(金) 06:25:31.28ID:0Gk4FggV 可読性という言葉はキミの頭の悪さの免罪符ではないですよ?
620デフォルトの名無しさん
2022/02/04(金) 06:46:32.31ID:Nf7lGIz+ ああ、awkを知らないのねw
勉強したほうがいいよ?
勉強したほうがいいよ?
621デフォルトの名無しさん
2022/02/04(金) 09:33:54.99ID:tCsz8H1O sedやawkつかうならperlつかうな
シェルスクリプトなんだから、判定等はそちらに任せて
あくまで置換等の処理限定で
シェルスクリプトなんだから、判定等はそちらに任せて
あくまで置換等の処理限定で
622デフォルトの名無しさん
2022/02/04(金) 09:38:44.39ID:P0nM2TP/ perl にこだわるガイジなんなんw
623デフォルトの名無しさん
2022/02/04(金) 09:56:25.32ID:mTUPlCRU >>600
sedの-zオプション使って複数行まとめて置換すれば?
sed -Ez 's/(guid: c5b2e3eb25e32904fa18c5ae09b782d9[^¥n]*¥n m_Name: )¥n/¥1FOOBAR!!¥n/g' ServerCameraSpot.prefab
sedの-zオプション使って複数行まとめて置換すれば?
sed -Ez 's/(guid: c5b2e3eb25e32904fa18c5ae09b782d9[^¥n]*¥n m_Name: )¥n/¥1FOOBAR!!¥n/g' ServerCameraSpot.prefab
624デフォルトの名無しさん
2022/02/04(金) 09:57:49.27ID:tCsz8H1O 柔軟性のないsedや、ハードル高めのawkよりいいべ
シェルスクリプトができる環境ならだいたいperlは入ってるし
シェルスクリプトができる環境ならだいたいperlは入ってるし
625デフォルトの名無しさん
2022/02/04(金) 10:32:37.85ID:bISwOsTB 条件の行と処理したい行が分かれてる時点で単純なフィルタじゃ無理だからでしょ
awkなりperlなりで状態遷移は必須
むしろsedでできるなら教えてほしい
awkなりperlなりで状態遷移は必須
むしろsedでできるなら教えてほしい
626デフォルトの名無しさん
2022/02/04(金) 11:08:46.57ID:o3KyLJ6X sedで簡単にできとるやんw
627デフォルトの名無しさん
2022/02/04(金) 11:10:04.73ID:+I1ORxpE たくさんのレスありがとうございます、試してみます
628デフォルトの名無しさん
2022/02/04(金) 11:26:16.31ID:NXJAfnlz あっさりワンライナーで書かれたもんだから激おこですな
629デフォルトの名無しさん
2022/02/04(金) 11:42:01.63ID:Nf7lGIz+ ここまで回答が出るのに時間がかかってるのに
あっさりとは言わないw
あっさりとは言わないw
630デフォルトの名無しさん
2022/02/04(金) 11:52:54.93ID:6M3IyixH あっさりでしょ
631デフォルトの名無しさん
2022/02/04(金) 11:56:56.61ID:dkixXFTm こってりがいいな
632デフォルトの名無しさん
2022/02/04(金) 12:20:56.16ID:bISwOsTB やっぱりsedなんだよな
世界一使えるツールやわ
世界一使えるツールやわ
633デフォルトの名無しさん
2022/02/04(金) 12:54:29.42ID:mTUPlCRU ワンショットならsedで十分なのかもしれないけど
同じタスクがまた発生しそうならunity yaml用のツール作っておくほうがいいと思う
from unityparser import UnityDocument
doc = UnityDocument.load_yaml(‘ServerCameraSpot.prefab’)
entry = doc.get(class_name='MonoBehaviour', attributes=('m_Script',))
for k, v in entry.m_Script.items():
if k == 'guid' and v == 'c5b2e3eb25e32904fa18c5ae09b782d9':
entry.m_Name = "FOOBAR!!!"
doc.dump_yaml()
同じタスクがまた発生しそうならunity yaml用のツール作っておくほうがいいと思う
from unityparser import UnityDocument
doc = UnityDocument.load_yaml(‘ServerCameraSpot.prefab’)
entry = doc.get(class_name='MonoBehaviour', attributes=('m_Script',))
for k, v in entry.m_Script.items():
if k == 'guid' and v == 'c5b2e3eb25e32904fa18c5ae09b782d9':
entry.m_Name = "FOOBAR!!!"
doc.dump_yaml()
634デフォルトの名無しさん
2022/02/04(金) 12:58:11.93ID:NMPx/TbP >>612
そんなのただのawkのベタ書きじゃねーか
ベタ餓鬼するなら断然perlのほうがいいよね
cat ServerCameraSpot.prefab | perl -ne '
if (/guid: c5b2e3eb25e32904fa18c5ae09b782d9/) {
chomp($a=<>);
print "$_$a new\n";
} else {
print
}'
perl最強!
そんなのただのawkのベタ書きじゃねーか
ベタ餓鬼するなら断然perlのほうがいいよね
cat ServerCameraSpot.prefab | perl -ne '
if (/guid: c5b2e3eb25e32904fa18c5ae09b782d9/) {
chomp($a=<>);
print "$_$a new\n";
} else {
}'
perl最強!
635デフォルトの名無しさん
2022/02/04(金) 13:10:35.72ID:oFNeucHW sed -e '/guid/,/^/s/m_name/xxx/'
636デフォルトの名無しさん
2022/02/04(金) 13:17:33.47ID:vr7VXdSJ >>623
あの、これ動作してないように思うんですけど‥
あの、これ動作してないように思うんですけど‥
637デフォルトの名無しさん
2022/02/04(金) 13:51:48.01ID:mKMsSnzj Ruby のyaml を使ったら、最初のPrefab 部分しか取れなかった。
行頭に、--- があって、複数の文書として扱われるからかな?
require 'yaml'
data = YAML.load_file( "ServerCameraSpot.prefab" )
p data
出力
{"Prefab"=>{"m_ObjectHideFlags"=>1,
"serializedVersion"=>2,
続く
行頭に、--- があって、複数の文書として扱われるからかな?
require 'yaml'
data = YAML.load_file( "ServerCameraSpot.prefab" )
p data
出力
{"Prefab"=>{"m_ObjectHideFlags"=>1,
"serializedVersion"=>2,
続く
638デフォルトの名無しさん
2022/02/04(金) 14:07:57.65ID:mTUPlCRU >>636
gnu sed 4.8で動いてる
gnu sed 4.8で動いてる
639637
2022/02/04(金) 14:34:10.41ID:mKMsSnzj Ruby のyaml で、load_stream で複数文書を読めるらしいが、
14行目の、--- !u!1 &1459795647327810 で、エラーになる
found undefined tag handle while parsing a node at line 14 column 5 (Psych::SyntaxError)
require 'yaml'
File.open "ServerCameraSpot.prefab" do |io|
p docs = YAML.load_stream( io )
end
14行目の、--- !u!1 &1459795647327810 で、エラーになる
found undefined tag handle while parsing a node at line 14 column 5 (Psych::SyntaxError)
require 'yaml'
File.open "ServerCameraSpot.prefab" do |io|
p docs = YAML.load_stream( io )
end
640デフォルトの名無しさん
2022/02/04(金) 14:43:47.14ID:u7GqER63■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国「国連安保理の許可なしに日本攻撃可能」 Xで旧敵国条項に言及… ★6 [BFU★]
- 中国「国連安保理の許可なしに日本攻撃可能」 Xで旧敵国条項に言及… ★7 [BFU★]
- 【千葉】コンビニに尿入りペットボトル並べた疑い、26歳男「むしゃくしゃして」…購入した客が飲もうとしたところ臭いに違和感 [ぐれ★]
- 高市首相が異例の“買春行為の罰則化の検討”に言及…世界では“買う側”に罰則を科すのが先進国のスタンダード ★2 [樽悶★]
- 【サッカー】U-17W杯 日本代表、無念のベスト8敗退… チャンスは多く作ったが仕留め切れず オーストリアに0-1で敗戦 [冬月記者★]
- 中国官製報道「日本経済はもう持たない」にネット民ツッコミ「ニュースだけ見てたら日本はもう百回くらい爆発してる」 [1ゲットロボ★]
- 現役JKのお茶会スレ( ¨̮ )︎︎𖠚ᐝ158
- 現役JKのお茶会スレ( ¨̮ )︎︎𖠚ᐝ157
- 【ガチ正論】一般人「中国に規制制裁されて、『中国ムカつく』じゃなくて矛先が『許さんぞ高市』になってる奴、頭おかしいの?」 ★2 [153490809]
- NHKニュースウオッチ9「日本側は対話にオープンな姿勢で安定した日中関係を築きたい考えなのに中国が意固地で糸口が見いだせない」 [904151406]
- 【ぺこ専🐰】なんG 兎田ぺこら突発配信実況スレ🏡【ホロライブ▶】
- 急におしりの穴グッて広げるのやめて
